拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 rocketmq实作延迟队列精确到秒级实作方案2-时间轮和delay-file实作

rocketmq实作延迟队列精确到秒级实作方案2-时间轮和delay-file实作

白鹭 - 2022-02-11 2150 0 0

上图是通过RocketMQ原始码分析一个实作原理方案示意图,

分为两个部分:

讯息的写入
讯息的Schedule

在写入CommitLog之前,如果是延迟讯息,按照每10分钟写入delayfile档案,对于快到时间执行的,直接写入时间轮,并且写入delayfile
,时间轮每秒钟执行,如果时间到了,就执行队列中的任务,写入commitlog档案中,commitlog会自动写入 comsumqueue中,然后客户端就能消费到了,

为什么delayfile档案保存10分钟的资料呢,考虑到时间轮不能太多任务在里面,保存10分钟内的资料,也不会占用太多的存储器

 

开源rocketmq延迟队列实作: 

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

 

 

 
标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *