1. 程式人生 > >DefaultMessageStore-CommitLog-MapedFileQueue.allocateMapedFileService初始化鏈

DefaultMessageStore-CommitLog-MapedFileQueue.allocateMapedFileService初始化鏈

mes rocketmq rocket messages mage pri 創建文件 方便 put

剛剛在研究rocketmq生成文件的源碼。零時記錄一下MapedFileQueue中屬性AllocateMapedFileService allocateMapedFileService的初始化鏈。

首先這個服務實在DefaultMessageStore中初始化完成並啟動的,然後DefaultMessageStore把AllocateMapedFileService對象傳給了CommitLog(綠色箭頭)

技術分享

然後CommitLog初始化MapedFileQueue的時候又穿給了它。

技術分享

最終MapedFileQueue有了兩種創建文件的方式,一種就是這個服務線程:AllocateMapedFileService

技術分享

使用起來也很方便:

技術分享

只要調用它的這個方法就可以了:

allocateMapedFileService.putRequestAndReturnMapedFile(nextFilePath,
                                nextNextFilePath, this.mapedFileSize);

這個方法會把這三個參數分裝,然後放入它的優先級隊列中PriorityBlockingQueue,這個服務線程就會不斷的從這個優先級隊列中拿需要創建文件的參數來創建文件來。

DefaultMessageStore-CommitLog-MapedFileQueue.allocateMapedFileService初始化鏈