RabbitMQ,死信交换 -> 无法将消息路由到默认交换?

标签 rabbitmq amqp dead-letter

使用 RabbitMQ Admin (v3),我尝试创建一个队列,将死信消息发送到默认交换器,并使用路由键“MyErrorRoutingKey”绑定(bind)错误队列。 所以在管理界面中,我将“死信交换”留空。

我只是想知道在尝试创建队列时出现以下消息是否正常:

406 PRECONDITION_FAILED - invalid arg 'x-dead-letter-routing-key' for queue 'MyQueue' in vhost '/': routing_key_but_no_dlx_defined

似乎可以将死信消息路由到默认交换,因为文档中进一步指出:

It is possible to form a cycle of dead-letter queues. For instance, this can happen when a queue dead-letters messages to the default exchange without specifiying a dead-letter routing key. Messages in such cycles (i.e. messages that reach the same queue twice) will be dropped.

那么我应该如何将消息路由到默认交换器?与上面描述的“循环无用死信”不同,我希望能够指定路由 key ,这样我的消息就不会丢失。

最佳答案

老问题,但似乎没有人回答,所以我会尝试一下。

我在使用 Web UI 时遇到了完全相同的错误,但我可以通过手动设置“x-dead-letter-exchange”和“x-dead-letter-routing-key”来解决它自定义参数而不是使用提供的字段。

enter image description here

关于RabbitMQ,死信交换 -> 无法将消息路由到默认交换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14141974/

相关文章:

asynchronous - 等同于非 HTTP 协议(protocol)(​​如 AMQP)的开放 API 规范

rabbitmq - RabbitMQ 中的死信死信消息

RabbitMQ 死信交换从未收到消息

ubuntu - 如何安装rabbitmq管理插件(rabbitmq-plugins)

go - 如何返回 channel

apache-camel - Camel RabbitMQ 确认

rabbitmq - 让 RabbitMQ 只监听环回接口(interface)?

java - 在 RabbitMQ 消费者上声明交换的目的

c++ - AMQP-CPP > 处理程序中的错误文件描述符

azure - 将过期的死信消息重新提交回队列