文章目录
通过RabbitMQ 死信队列实现延迟MQ消息,消息延迟,MQ延迟队列
1、延迟消息原理
客户端向MQ服务器发送一条队列消息,该消息设置了TTL【该消息在超过TTL的时间内没有被消费,就会被视为是死信】,但是不给该队列提供消费者,在消息超时后,由死信交换机转发该消息到指定的消费者,以实现延迟队列。
简单点说,就是向一个没有消费者的队列发送一条有过期机制的消息,消息过期后死信交换机DLK把消息转发给一个没有生产者的队列,以实现消费。
2、如何在Springboot 下创建延迟消息队列
只需要正常的创建2个队列,然后设置三个属性即可创建延迟消息队列
@Bean(DEAD_LETTER_PROD)
Queue a() {
Map<String,Object> args = Maps.newHashMap();
// RabbitMqExchange.ExchangeCenter.DEAD_LETTER_EXCHANGE_CONSUME 只是一个交换机的名称,可以按需要定义
args.put("x-dead-letter-exchange", RabbitMqExchan