死信交换机和延时消息
很常见的一个场景,提交订单但是没有付款。我们对这一类的消息就要采用延时消息来处理逻辑了!
在这里我才用的是RabbitMQ,其他的消息中间件应该都是一样的!
首先我们要有两个概念 消息TTL和死信交换机Exchange,这两个组合实现上面的需求!
TTL:消息的存活时间。如果消息超过了这个时间没有被消费的话,就称之为死信!
死信交换器 Dead Letter Exchanges:一个消息在满足一定的条件下就会进入此交换机。 常见的就是上面的TTL到期了!
实现流程
1.创建队列一,设置x-message-ttl=10000
x-dead-letter-exchange: 死信交换机
2.创建死信交换机 (就是不同交换机,名字不同而已)
3.创建队列二,和死信交换机进行绑定
4.测试:向队列一发送消息,等待10秒消息就会消失,进入到队列二中去!