RabbitMQ:当原始交换中没有队列时,将消息移动到DLX

时间:2017-08-14 10:58:01

标签: c# rabbitmq

我想知道是否可以将RabbitMQ配置为在将消息传递到另一个(主题)交换机一段时间之后将消息移动到DLX而不会被传递到任何队列并消耗掉?

我见过的所有示例都要求存在队列,因为必须在队列中声明DLX映射。但是如果 没有 队列呢?

在我的情况下,客户端声明在客户端关闭连接时消失的自动删除队列。这会导致主题交换上的发布者出现问题,从未通知该消息在分配的时间内不可能被消费。

FWIW,我正在使用C#中的RabbitMQ。

[UPDATE]

我发现article似乎表明除了DLX之外我还需要设置一个名为备用交换的东西,因为DLX只接收已经路由的消息。我目前正在努力了解它应该如何运作。

进一步的建议表示赞赏!

1 个答案:

答案 0 :(得分:1)

查看alternate exchange docs article

在声明主要交换时,您可以提供alternate exchange的名称作为参数。

  • 创建alternate exhange并将其设为fanout类型。
  • 创建绑定到该备用交换的单个持久队列。

现在所有未路由的消息都应该在该队列中结束。