MappedFileQueue的封装
MappedFileQueue是MappedFile的管理容器,MappedFileQueue是对存储目录的封装。
查找MappedFile:
1.根据时间戳来查找MappedFile:
2.根据消息偏移量offset查找MappedFile
mq采用定时删除策略,不定时的将已消费的消息从存储文件中删除,会造成极大的内存压力与资源浪费,也就是说在存储文件中,第一个文件不一定是0000...因为该文件在某一时刻会被删除。
参考下面3个方法理解:
内存映射文件MappedFile
wirteBuffer:堆内存ByteBuffer,如果不为空,数据首先将存储在该Buffer中,然后提交到MappedFile对应的内存映射文件Buffer。transientStorePoolEnable为true时不为空
transientStorePool:堆内存池,transientStorePoolEnable为true时启用。
fileFromOffset:该文件的初始偏移量
mappedByteBuffer:物理文件对应的内存映射Buffer。