使用RabbitMQ实现订单超时取消,大致流程:
生产者生产一条设置了TTL的延迟取消订单消息=>延迟队列交换机(通过绑定路由键)=>消息投递至延迟队列=>消息延迟队列时间到期=>经过死信队列交换机(通过绑定路由键)=>投递至死信队列=>消费者监听死信队列消息即时消费(做取消订单逻辑)。
下面来看代码:
一、先声明交换机、队列以及他们的绑定关系:
@Configurationpublic classRabbitMQConfig {//声明延时队列交换机
public static final String DELAY_EXCHANGE_NAME = "delay.queue.demo.business.exchange";//延时队列c
public static final String DELAY_QUEUEC_NAME = "delay.queue.demo.business.queuec";//延时队列c路由key
public static final String DELAY_QUEUEC_ROUTING_KEY = "delay.queue.demo.business.queuec.routingkey";//声明死信队列交换机
public static final String DEAD_LETTER_EXCHANGE = "delay.queue.demo.deadletter.exchange";//死信队列c
public static final String DEAD_LETTER_QUEUEC_NAME = "delay.queue.demo.deadletter.queuec";//死信交换机 的 不设时间路由key
publ