什么是延迟消息?
对于消息中间件来说,producer将消息发送到mq的服务器,但并不期望这条消息马上被消费,而是推迟到当前时间点之后的某个时间点后再投递到queue中让consumer进行消费,延迟消息的使用场景很多,一种比较常见的场景就是在电商系统中,订单创建后,会有一个等待用户支付的时间窗口,一般为30分钟,30分钟后consumer收到这条订单消息,然后程序去订单表中检查当前这条订单的支付状态,如果是未支付的状态,则自动清理掉,这样就不需要使用定时任务的方式去处理了,示意图如下,

RocketMQ 支持定时消息,但是不支持任意时间精度,仅支持特定的 level,例如定时 5s, 10s, 1m 等。其中,level=0 级表示不延时,level=1 表示 1 级延时,level=2 表示 2 级延时,以此类推
如何配置
1、可以直接在服务器端的broker.conf中进行配置,
在服务器端(rocketmq-broker端)的属性配置文件中加入以下行:
messageDelayLevel=1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h
当然这种方式不够灵活,不推荐

本文介绍了RocketMQ的延迟消息功能,包括延迟消息的定义、配置方式和使用场景。通过配置messageDelayLevel参数来设置不同级别的延迟时间,并通过代码示例展示了如何在Producer端指定延迟级别发送消息,以及Consumer的消费过程。在电商系统的订单支付场景中,延迟消息能有效避免不必要的定时任务。文章提供了完整的代码示例,帮助读者理解和应用RocketMQ的延迟消息。
订阅专栏 解锁全文
1798

被折叠的 条评论
为什么被折叠?



