1.解决方案#
利用RabbitMQ的死信队列机制实现订单超时自动取消;
具体为下单后发送设置了TTL的订单消息到队列A,当超时未消费时,消息被转发到对应的死信队列B,监听队列B的消费者收到消息对其进行处理;
消费者对订单进行取消操作需保证幂等,因为可能订单已经被用户主动取消;
2.Maven配置#
1 | <!-- Spring RabbitMQ --> |
3.YML配置#
1 | spring: |
4.代码配置#
1 | package com.yeshimin.ysmspace.config; |
5.消息发布和消费及相关配置#
5.1 消息后置处理器-用于设置消息的超时时间#
1 | package com.yeshimin.ysmspace.rabbitmq; |
5.2 消息发布#
1 |
|
5.3 消息消费#
1 | package com.yeshimin.ysmspace.rabbitmq; |
6.版本信息#
- springboot parent - 2.3.5.RELEASE
- rabbitmq - 3.3.5