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"} 
	]
)
相關文章
相關標籤/搜索