DefaultMessageStore-CommitLog-MapedFileQueue.allocateMapedFileService初始化链
Posted 瓜子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DefaultMessageStore-CommitLog-MapedFileQueue.allocateMapedFileService初始化链相关的知识,希望对你有一定的参考价值。
刚刚在研究rocketmq生成文件的源码。零时记录一下MapedFileQueue中属性AllocateMapedFileService allocateMapedFileService的初始化链。
首先这个服务实在DefaultMessageStore中初始化完成并启动的,然后DefaultMessageStore把AllocateMapedFileService对象传给了CommitLog(绿色箭头)
然后CommitLog初始化MapedFileQueue的时候又穿给了它。
最终MapedFileQueue有了两种创建文件的方式,一种就是这个服务线程:AllocateMapedFileService
使用起来也很方便:
只要调用它的这个方法就可以了:
allocateMapedFileService.putRequestAndReturnMapedFile(nextFilePath, nextNextFilePath, this.mapedFileSize);
这个方法会把这三个参数分装,然后放入它的优先级队列中PriorityBlockingQueue,这个服务线程就会不断的从这个优先级队列中拿需要创建文件的参数来创建文件来。
以上是关于DefaultMessageStore-CommitLog-MapedFileQueue.allocateMapedFileService初始化链的主要内容,如果未能解决你的问题,请参考以下文章