rocketmq实现延迟队列精确到秒级实现方案1-代理实现
简单的来说,就是rocketmq发送消息到broker的时候,判断是否定时消息,
如果是定时消息,将消息发送到代理服务(这个是一个独立的服务,需要自己开发,定时地把消息发送出去),
当然了消息用什么来保存呢?
可以是数据库,redis等等,不过我推荐采用文件,因为消息可能会比较多,需要保存一定的时间,可以考虑RocksDB,这个效率非常的高效。
用什么来通信呢,我觉得 netty 比较好,当然了http也是可以的。
这种方式实现的好处是,不需要修改rocketmq服务端,修改发送消息的mq客户端就可以,
如果延迟消息很多的话,可以水平的扩展服务器,多台代理机器来发送消息
开源rocketmq延迟队列实现:
https://gitee.com/venus-suite/rocketmq-with-delivery-time.git