RabbitMQ Dead Letter Exchange

简称DLXruby

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

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

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

  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"} 
	]
)
相关文章
相关标签/搜索