7

我正在尝试在 RabbitMQ 中实现一个 dlx 队列。场景很简单,我有 2 个队列:1)活着 2)死了(x-dead-letter-exchange: "immediate", x-message-ttl: 5000)

和一个“立即”的交换,它绑定到 1) 活着

我尝试运行此示例: 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 对其进行了测试

我错过了什么吗?

4

1 回答 1

8

当消息在 RabbitMQ 中“消失”时,问题通常归结为绑定。因此,为了让您的示例正常工作,我执行了以下操作:

  1. 创建了 2 个队列,活的,死的(使用 TTL 和 DLX)

  2. 创建了一个名为 immediate 的 DIRECT 类型的交换

  3. 在交换“立即”和“活动”队列之间创建了一个绑定,路由键为“死” - 原因是,消息进入死队列的路由键(如果使用默认交换是“死”这个需要在死信交换上的绑定中匹配)。

这里重要的部分是即时交换和活动队列之间的绑定。

为了测试我将消息发布到死队列中,我可以看到它短暂出现在死队列中,然后出现在活动队列中。

于 2012-11-29T11:43:10.253 回答