我正在尝试在 RabbitMQ 中实现 dlx 队列。
场景很简单
我有 2 个队列:
1)活着
2)死亡(x-dead-letter-exchange:“立即”,x-message-ttl:5000)
以及“立即”交换,这必然是 1) 活着
我尝试运行这个例子:http://blog.james-carr.org/2012/03/30/rabbitmq-sending-a-message-to-be-consumed-later/ http://blog.james-carr.org/2012/03/30/rabbitmq-sending-a-message-to-be-consumed-later/但似乎消息在 ttl 过期后被丢弃,并且不会在交换器上发布,因此我的活动队列始终为空。
我还尝试在管理控制台中手动创建队列,并且得到相同的行为。
我使用 Ubuntu/rabbitmq 3.0.0 以及 Mac OS X 和rabbitmq 2.8.7 对其进行了测试
我错过了什么吗?
当消息在 RabbitMQ 中“消失”时,问题通常出在绑定上。因此,为了让您的示例正常工作,我执行了以下操作:
创建了 2 个队列,活着,死了(使用 TTL 和 DLX)
创建了一个名为直接类型 DIRECT 的交换
使用路由键“死”在交换器“立即”和队列“活动”之间创建绑定 - 这样做的原因是,消息进入死队列的路由键(如果使用默认交换器是“死”的)需要在死信交换的绑定中匹配)。
这里重要的部分是之间的绑定即时交换和alive queue.
为了测试我将消息发布到死队列中,我可以看到它短暂地出现在死队列中,然后出现在活动队列中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)