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

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

相关推荐
777VG6 小时前
PostgreSQL +martin将多张表输出成一个 MVT
前端·数据库·postgresql
aax12134537 小时前
VOC 集群治理工程实操|美丽蓝天绿岛项目 RTO 工艺选型、管控方案与申报要
大数据·数据库·人工智能
IvorySQL7 小时前
PG 日报|优化缓冲区批量扫描,降低多套接字并发竞争
数据库·人工智能·postgresql·开源·区块链
前端工作日常7 小时前
我学习到的Java中domain和dto区别
java·后端
这个DBA有点耶8 小时前
交易型数据库是什么?OLTP核心能力与2026选型指南
数据库·数据仓库·sql·database·数据库架构·olap·dba
大熊猫侯佩8 小时前
WWDC26 全新 SwiftData 的 .codable 宏选项:它不是泛型专用胶水
数据库·swift·apple
码农学院8 小时前
基于Spring Boot的跨境电商多语言订单管理系统架构设计
java·大数据·spring boot
技术小结-李爽9 小时前
【工具】pom文件的<packaging>
java·maven
l156469489 小时前
突围!图文混合知识库难以解析,Kimi-K3 原生视觉架构深耕知识工作,DMXAPI 统一接口,缩短项目开发周期
java·大数据·开发语言
童谣110 小时前
越华环保集团市级统筹申报数字化中台:政策校验与减排仿真一体化架构
数据库·架构