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

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小时后商家未处理,则默认同意,自动退款

相关推荐
我会尽全力 乐观而坚强2 分钟前
MySQL库与表的操作
linux·数据库·mysql
lilihuigz15 分钟前
产品附加选项插件WooCommerce Product Add-Ons:9种字段类型与3种定价模式提升销售 - 易服客工作室
数据库·mysql·wordpress插件·woocommerce扩展·定制选项
剑挑星河月41 分钟前
94.二叉树的中序遍历
java·算法·leetcode
2301_801184751 小时前
docker 工作
java·docker·容器
360智汇云1 小时前
Valkey 9.1上线:从Redis兼容到AI数据能力探索
数据库
老前端的功夫1 小时前
【Java从入门到入土】47:构建工具:Maven与Gradle的战争
java·python·maven
aaPIXa6221 小时前
C++模板元编程:在编译期完成计算,实现零运行时开销
java·开发语言·c++
标致的自行车1 小时前
Entity Framework之问题收集
jvm·数据库·oracle
啵啵鱼爱吃小猫咪1 小时前
Franka机械臂安装实时内核
数据库·postgresql
夜郎king1 小时前
RuoYi-Vue3 企业级后台快速落地实战指南
java·开发语言