rocketmq实现延迟队列精确到秒级实现方案3-时间轮和秒级文件实现

   

     时间轮和秒级文件实现原理图

     这种方案比较简单实现,通过秒级时间,建立对应的文件夹,只要相同的时间超时的消息,就在同一个目录,通过msgid保证文件不重复,
等到了时间后,就扫描对应的文件夹的文件,发送到队列中,写入commitlog即可。

当然了,我们可以先缓冲一定时间的文件夹文件,这样效率高一些。

我也开发这种方案的实现(简易版本),在测试环境跑了2周,(测试了每秒5000条延时消息)暂时没有问题,说明对于延迟消息不大的情况下,
这个方案最简单,也是不错的选择

 

开源rocketmq延迟队列实现: 

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

 

posted @ 2022-01-17 20:24  tomj2ee  阅读(685)  评论(0编辑  收藏  举报