RabbitMQ

来源:互联网 发布:全国教育经费统计软件 编辑:程序博客网 时间:2024/06/05 10:52
一、分析
队列中消息成为Dead Letter的几种情况:
The message is rejected (basic.reject or basic.nack) with requeue=false,
The TTL for the message expires; or
The queue length limit is exceeded.
而通过配置DLX(指定正则表达式和x-dead-letter-exchange及x-dead-letter-routing-key键值),Dead Letter就会被重新发布到指定的DLX中。

二、配置DLX
如下2种配置方法:
1. 服务器端(policy)

rabbitmqctl

rabbitmqctl set_policy DLX " ^queue.fund.shareEarning" '{"dead-letter-exchange":" DLX名"}' --apply-to queues

rabbitmqctl (Windows)

rabbitmqctl set_policy DLX " ^queue.fund.shareEarning" "{""dead-letter-exchange"":""DLX名""}" --apply-to queues

同样地,增加"dead-letter-routing-key"键值来显式指定routing key。

或者通过Web UI方式设置:

 
name: policy的名字
pattern: 正则表达式用来匹配exchange或queue名

2. 客户端(queue's arguments)
<rabbit:queue id="queue.fund.shareEarning" name="queue.fund.shareEarning" durable="true" auto-delete="false" exclusive="false"><rabbit:queue-arguments><entry key="x-dead-letter-exchange" value="DLX" /><entry key="x-dead-letter-routing-key" value="routingKey.fund.shareEarning" /></rabbit:queue-arguments></rabbit:queue>



————————————————
参考文献:
[1] RabbitMQ - Dead Letter Exchanges(http://www.rabbitmq.com/dlx.html)
0 0