rocketmq實現延遲隊列精確到秒級實現方案2-時間輪和delay-file實現


上圖是通過RocketMQ源碼分析一個實現原理方案示意圖。

分為兩個部分:

消息的寫入
消息的Schedule

在寫入CommitLog之前,如果是延遲消息,按照每10分鍾寫入delayfile文件,對於快到時間執行的,直接寫入時間輪,並且寫入delayfile
,時間輪每秒鍾執行,如果時間到了,就執行隊列中的任務,寫入commitlog文件中,commitlog會自動寫入 comsumqueue中,然后客戶端就能消費到了。

為什么delayfile文件保存10分鍾的數據呢,考慮到時間輪不能太多任務在里面,保存10分鍾內的數據,也不會占用太多的內存

 

開源rocketmq延遲隊列實現: 

https://gitee.com/venus-suite/rocketmq-with-delivery-time.git

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM