延迟消息 延时消息定义 延时消息 是指消息在发送后不会立即投递给消费者,而是在指定的延迟时间之后才可被消费。 开源 RabbitMQ 本身不直接支持原生延时消息语义 ,但可以通过现有机制组合 或官方插件实现类似能力。 应用场景 延时消息适用于需要定时触发或延迟处理的业务场景,例如: 订单超时关闭 下单成功后发送延时消息,30 分钟后检查支付状态,未支付则关闭订单。 提醒通知 预约活动开始前,通过延时消息发送提醒。 任务调度 延迟执行数据清理、报表生成、状态检查等后台任务。 实现方案对比 方案 实现原理 特点 死信队列(DLX)+ TTL 利用消息或队列 TTL 过期后转入死信交换机,再重新路由到消费队列 无需插件,兼容性好;配置复杂,延迟精度有限 延时消息插件 使用官方延时交换机,消息到期后才进入正常路由流程 使用简单、精度高;需安装插件,存在版本依赖 方案一:死信队列(DLX)+ TTL 实现原理 RabbitMQ 支持为: 消息 设置 TTL(expiration) 队列 设置 TTL(xmessagettl) 当消息到达 TTL 后不会立即删除,而是被投递到死信交换机(Dead Letter Exchange, DLX),再由 DLX 路由到目标队列,从而实现“延迟消费”。