RabbitMQ Dead Letter Exchange

本文深入探讨了RabbitMQ中死信队列(DLQ)的概念及其配置方式,详细介绍了消息如何在特定条件下成为死信并被路由到DLQ。通过代码示例展示了如何设置死信交换机(DLX)和死信路由键(DLK),以实现高级的消息传递策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简称DLX

如果一个queue设置了DLX,那么在rabbitmq的管理控制台中的这个queue上就会多个标志,如图:

边上还有DLK,是dead-letter-routing-key的缩写。

队列中的消息,有可能是'dead-lettered',字面意思就是'死信',当下面的这些情况发生时,信就被认为是‘死信’,这些死信会被送至另一个exchange,这个exchange就是DLX:

  1. The message is rejected (basic.reject or basic.nack) with requeue=false;
  2. The TTL for the message expires;
  3. The queue length limit is exceeded.

DLX默认是没有的,有两种方法设置,这里使用代码在声明队列的时候设置:

Queue.declare(
	channel, "myqueue",
	durable: true,
	arguments: [
		# 这里空字符串表示用default exchange,可以设置任意的exchange
		{"x-dead-letter-exchange", :longstr, ""},
		# 如果这个不设置, 默认使用这个消息的routing key
		{"x-dead-letter-routing-key", :longstr, "my.error.message"} 
	]
)

转载于:https://my.oschina.net/u/855913/blog/2987406

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值