RabbitMQ Dead Letter Exchange
阿新 • • 發佈:2018-12-12
簡稱DLX
如果一個queue設定了DLX,那麼在rabbitmq的管理控制檯中的這個queue上就會多個標誌,如圖:
邊上還有DLK,是dead-letter-routing-key的縮寫。
佇列中的訊息,有可能是'dead-lettered',字面意思就是'死信',當下面的這些情況發生時,信就被認為是‘死信’,這些死信會被送至另一個exchange,這個exchange就是DLX:
- The message is rejected (basic.reject or basic.nack) with requeue=false;
- The TTL for the message expires;
- 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"} ] )