赞
踩
客户端向MQ服务器发送一条队列消息,该消息设置了TTL【该消息在超过TTL的时间内没有被消费,就会被视为是死信】,但是不给该队列提供消费者,在消息超时后,由死信交换机转发该消息到指定的消费者,以实现延迟队列。
简单点说,就是向一个没有消费者的队列发送一条有过期机制的消息,消息过期后死信交换机DLK把消息转发给一个没有生产者的队列,以实现消费。
只需要正常的创建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", RabbitMqExchange.ExchangeCenter.DEAD_LETTER_EXCHANGE_CONSUME);
// 消息过期转发到那个队列去
args.put("x-dead-letter-routing-key", DEAD_LETTER_CONSUME);
// 消息超时
args.put("x-message-ttl
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。