目录
前言
RocketMQ 支持延迟消费消息,可以支持指定延迟时间消费,目前共有18种延迟级别(1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h)。如果我们有定时关单这样的业务需求,就很适合使用RockeMQ延迟队列,这样可以避免自己写繁琐的定时任务代码。
一张图带你了解Rocketmq延迟消费原理
1.首先生产者发送Topic为CLOSE_TOPIC的延迟3min消费的消息到broker上;
2.broker收到延迟消息之后,先将延迟消息Topic替换为SCHEDULE_TOPIC_XXXX,存储到磁盘,这样消费者就不会消费。
3.broker启动一个ScheduleMessageService的调度服务,读取SCHEDULE_TOPIC_XXXX的延迟消费消息,判断时间是否
过了3min;
4.如果过了3min,broker就会将该消息的Topic还原为CLOSE_TOPIC,存储到磁盘,这样消费者就可以消费这个消息了
缺点
1.时间精度不够:不能精确3min消