RocketMQ 延迟消息是如何实现的

RocketMQ提供18种延迟级别支持延迟消费,如定时关单等业务场景。其工作原理包括生产者发送延迟消息到broker,broker将延迟消息Topic替换存储,通过ScheduleMessageService调度服务判断并还原Topic以便消费者消费。然而,该机制存在时间精度不足、不支持任意延迟时间和最长延迟时间为2小时的缺点。社区计划引入时间轮以支持更长时间的延迟消费。
摘要由CSDN通过智能技术生成

目录

 

前言

一张图带你了解Rocketmq延迟消费原理

缺点

源码分析延迟消费消息底层实现


前言

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消

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值