社区
拾荒的小海螺
学习打卡
帖子详情
JAVA:利用 RabbitMQ 死信队列实现支付超时场景的技术指南
拾荒的小海螺
2024-10-31 09:52:23
利用 RabbitMQ 死信队列实现支付超时场景的技术指南
...全文
103
回复
打赏
收藏
JAVA:利用 RabbitMQ 死信队列实现支付超时场景的技术指南
利用 RabbitMQ 死信队列实现支付超时场景的技术指南
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
JAVA
:Spring Boot3 集成
RabbitMQ
死信
队列
实现
支付
超时
场景
本文介绍了如何
利用
RabbitMQ
的
死信
队列
实现
支付
系统订单
超时
自动撤销功能。通过配置正常
队列
和
死信
队列
,为订单消息设置TTL(如30分钟),若用户未在规定时间完成
支付
,消息会转入
死信
队列
触发撤销逻辑。文章详细说明了
Java
环境下的
实现
步骤,包括
RabbitMQ
配置、消息发送和
死信
队列
监听处理。该方案可高效处理
超时
订单,避免资源浪费,并适用于其他需要
超时
处理的业务
场景
。
RabbitMQ
死信
队列
应用
目录 1、什么是
死信
队列
2、
死信
队列
应用
场景
3、延迟消息概念 3.1 消息的TTL(Time To Live) 3.2
死信
交换器 3.3 延时
队列
4、
死信
队列
使用流程图 5、
死信
队列
应用(管理控制台) 6、
死信
队列
应用(
Java
代码) 6.1
RabbitMQ
原生API 6.2 SpringBoot集成
RabbitMQ
1、什么是
死信
队列
DLX, Dead-Letter-Exchange。
利用
DLX, 当消息在一个
队列
中因为业务
队列
处理失败(比如抛异常并且达到了re.
RabbitMQ
实现
下单
超时
自动取消
支付
用户下单,将订单存放到交换机ex.order(过期时间为下单
超时
时间30分钟),消息到q_order
队列
中,不设置该
队列
的消费者(故此消息一直未消费).,同时指定一个
死信
交换机ex.order.dlx,并绑定一个
死信
队列
q.order.dlx,当消息超过30分钟过期变成
死信
时,该消就会被发送到该
死信
队列
上,由
死信
消费者消费,判断订单id是否
支付
,如果未
支付
则修改为
支付
超时
订单过期。声明订单和
死信
队列
和交换机,并绑定,(订单消息过期时间这里为了方便测试,设置为10s)观察订单信息进入到订单
队列
。
消息
队列
之
支付
超时
,取消订单(
死信
队列
)
业务
场景
创建订单10分钟之后自动
支付
订单
超时
取消 …等等…
实现
方式 最简单的方式,定时扫表;例如每分钟扫表一次十分钟之后未
支付
的订单进行主动
支付
; 优点: 简单 缺点: 每分钟全局扫表,浪费资源,有一分钟延迟 使用
RabbitMq
实现
RabbitMq
实现
延迟
队列
优点: 开源,现成的稳定的
实现
方案; 缺点:
RabbitMq
是一个消息中间件;延迟
队列
只是其中一个小功能,如果团队
技术
栈中本来就是使用
RabbitMq
那还好,如果不是,那为了使用延迟
队列
而去部署一套
RabbitMq
成本有点大; 使
支付
超时
订单关单策略之
RabbitMQ
死信
队列
方式
延迟消息 订单
超时
关闭 业界的一些
实现
方式: .定时任务高精度轮训 .redis监听key过期 .jdk自带的DelayQueue .采用RocketMQ自带延迟消息功能 .
RabbitMQ
本身是不支持延迟
队列
的,结合
死信
队列
的特性,就可以做到延迟消息
拾荒的小海螺
4
社区成员
67
社区内容
发帖
与我相关
我的任务
拾荒的小海螺
博客地址:http://lsk-ww.cn/
复制链接
扫一扫
分享
社区描述
博客地址:http://lsk-ww.cn/
个人社区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章