延迟队列的介绍及常见问题

1.什么是延迟队列:

延迟队列是一个特殊的队列,消息发送之后,并不立即给消费者,而是等待特定时间后,才发送给消费者.

2.注意:Rabbit MQ本身并没有直接实现延迟队列,而是通过以下方式间接实现延迟队列的:

①:TTL+死信队列 组合

②:使用官方提供的延迟插件实现延迟功能

由于对消息设置TTL可能会导致消息执行先后的顺序问题 (在本人博客RabbitMQ常见高级特性里有说明),所以优先使用"队列TTL+死信队列"和"延迟插件" 来实现延迟队列

3.二者对比:

①:基于死信队列实现的延迟队列:

**<1>优点:**灵活不需要额外的插件支持

**<2>缺点:**a.存在消息顺序问题,b.需额外逻辑去处理死信队列消息

②:基于插件实现的延迟队列:

**<1>优点:**a.通过插件可直接创建延迟队列,简化了延迟消息的实现,b.避免DLX时序问题

**<2>缺点:**a.需依赖特定插件,有运维工作,b.只适用特定的MQ版本(插件最低支持Rabbit MQ的

3.6.0版本)

4.应用场景:

①:订单在规定时间内未支付自动取消

②:用户注册成功后,3天后发调查问卷

③:用户发起退款,24小时后商家未处理,则默认同意,自动退款

相关推荐
宸津-代码粉碎机6 小时前
OpenAI 连夜迎战 Grok Bot 和 Muse:AI 智能体从 “会聊天” 到 “能办事”,现在入场还来得及吗
java·大数据·人工智能·分布式·python
weixin_511255216 小时前
MySQL升级记录
数据库·mysql
噢,我明白了7 小时前
java中唯一键和幂等键的应用
java·后端
程序猿乐锅7 小时前
【黑马点评 | 第八篇】Redisson分布式锁
java·数据库·spring boot·redis·分布式·spring·缓存
Leo.yuan7 小时前
2026年本地化Data Agent优质厂商盘点:哪些产品更适合企业生产环境
大数据·数据库·人工智能
考虑考虑7 小时前
synchronized字符串常量
java·后端·java ee
ly76898 小时前
RabbitMQ 消费确认与预取:manual ack、reject、nack 与 QoS 的取舍
rabbitmq·死信队列·消息可靠性·消费确认·qos 预取
长谷深风1118 小时前
Tool与Skill:AI能力设计的分水岭
java·人工智能·ai·大模型·aiagent
m0_587383008 小时前
广州24小时自助健身房解决方案实战指南与系统部署要点
java·spring·小程序·架构·需求分析
做运维的阿瑞8 小时前
数据库增删改的安全写法
数据库·sql·mysql