延迟队列是指消息到达队列后不会立即被消费,而是等过了一段时间后再消费。
    很多消息中间件都提供了延迟队列的功能,但是rabbitMQ没有,需要通过 ttl+死信队列 的方式实现延迟队列。场景:订单下达30分钟内未付款取消订单,如果付款了则修改库存
    image.png
    image.png
    image.png
    即添加一个TTL队列设置过期时间为30分钟,注意别用消费端去消费这个TTL队列,让这个TTL队列自动过期从而进入预先创建好的死信交换机和死信交换机所绑定的死信队列里,用消费端去拿死信队列里的消息进行消费即实现上面的场景要求了。
    1.生产端,发送订单到订单队列,订单队列时间到期后自动进入死信交换机和死信交换机所绑定的死信队列里,消费端就可以拿到死信队列里的消息进行逻辑处理了。
    image.png
    2.消费端,当监听到死信队列的信息后进行逻辑处理即可。
    image.png