学习死信队列,首先要理解死信产生的原因或条件:
-
消息被拒 (
basic.rejectorbasic.nack) 并且没有重新入队 (requeue=false); -
消息在队列中过期,即当前消息在队列中的存活时间已经超过了预先设置的
TTL(Time To Live) 时间; -
当前队列中的消息数量已经超过最大长度。
一旦消息变成了死信,那么消息就会被送至死信交换机,再路由至死信队列。
Map<String, Object> argMap = new HashMap<>();
argMap.put("x-message-ttl", 30 * 1000); // 设置队列里消息的ttl的时间30s
argMap.put("x-dead-letter-exchange", dlxExchangeName); // 给队列设置死信交换机
设置队列是属性,①:队列中消息的过期时间是 30 秒 ②:队列产生的死信将会被转发至dlxExchangeName交换机。
argMap.put("x-dead-letter-routing-key", "some-routing-key");
也可以指定死信路由的键。(若不指定,则使用原队列的routingKey)
本文介绍了RabbitMQ中死信队列的设置,包括消息变为死信的条件,如被拒、过期或队列长度超出限制。通过设置队列属性,如消息存活时间(TTL)为30秒,以及指定死信交换机和路由键,可以有效地管理和处理RabbitMQ中的死信。
1101

被折叠的 条评论
为什么被折叠?



