RabbitMQ Dead Letter Exchange

简称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"} 
	]
)

猜你喜欢

转载自my.oschina.net/u/855913/blog/2987406
今日推荐