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

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

相关推荐
初圣魔门首席弟子1 小时前
AI Agent 核心原理:工具调用(Function Calling)完整工作流程详解
前端·数据库·人工智能
MacroZheng1 小时前
横空出世!Claude Code画图神器来了,比Visio快10倍!
java·人工智能·后端
2601_961963381 小时前
React对比Vue对比Angular:构建企业级合同签署平台深度评测
java·微服务·架构
herinspace1 小时前
管家婆云辉煌开单优化
服务器·数据库·电脑·管家婆软件·财务软件
布局呆星1 小时前
Spring Boot + AOP 操作日志实战:自定义注解、切面编程、SecurityContext 全链路贯通,一次讲透
java·spring boot·后端
lazy H1 小时前
Maven 依赖爆红怎么办?IDEA 中 Maven 项目常见问题和解决方法总结
java·后端·学习·maven·intellij-idea
Flittly1 小时前
【AgentScope Java新手村系列】(8)多Agent协作
java·spring boot·笔记·spring·ai
码云骑士1 小时前
24-Django请求全链路-WSGI到数据库响应的完整旅程
数据库·python·django
SimonKing1 小时前
低调低调,白嫖文生图,文生视频模型,无Token限制
java·后端·程序员