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

Posted tomj2ee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

 

 

以上是关于rocketmq实现延迟队列精确到秒级实现方案2-时间轮和delay-file实现的主要内容,如果未能解决你的问题,请参考以下文章

分布式技术专题分布式消息队列-RocketMQ延迟消息实现原理和源码分析

golang实现本地延迟队列

基于supervisor秒级Laravel定时任务

基于Redisson实现延迟队列

rocketmq实现延时队列

RocketMq实现延时队列