时间轮和秒级文件实现原理图
这种方案比较简单实现,通过秒级时间,建立对应的文件夹,只要相同的时间超时的消息,就在同一个目录,通过msgid保证文件不重复,
等到了时间后,就扫描对应的文件夹的文件,发送到队列中,写入commitlog即可。
当然了,我们可以先缓冲一定时间的文件夹文件,这样效率高一些。
我也开发这种方案的实现(简易版本),在测试环境跑了2周,(测试了每秒5000条延时消息)暂时没有问题,说明对于延迟消息不大的情况下,
这个方案最简单,也是不错的选择
开源rocketmq延迟队列实现:
https://gitee.com/venus-suite/rocketmq-with-delivery-time.git