jhi*_*den 43 rabbitmq dead-letter
我正在尝试设置我的第一个RabbitMQ死信交换,这是我通过Web管理界面使用的步骤:
我期待这些步骤应该通过"dead.letter.test"交换记录到"dead.letter.queue".这不会发生.
我可以手动将消息放入"dead.letter.test"交换中,它显示在"dead.letter.queue"中,所以我知道这很好.
当我查看管理UI时,它显示在队列"test1"上设置了DLX参数.
我哪里错了?
jhi*_*den 62
Gentilissimo Signore非常友好地在Twitter上回答我的问题.问题是,如果您的死信交换设置为DIRECT,您必须指定一个死信路由密钥.如果您只是希望所有NACKed消息进入死信桶以供以后调查(就像我一样)那么您的死信交换应设置为FANOUT.
以下是有效的更新步骤:
Sah*_*ati 14
最后我们将检查它.为此,在' test_exchange ' 上发布一些参数' expiration '设置为10000.在此之后,当' test_exchange ' 上发布消息时,它将转到' test_queue ',当消息在队列中过期时,它将查找DLX参数(死信交换名称)那条消息找到名称' dead_exchange '然后该消息将达到' dead_exchange '将其传递给' 死队列 '..如果你仍然有任何问题,如果我错过了解你的问题..写下你的问题我一定会看看它...谢谢..
注意:必须在' test_exchange ' 上发布消息,因为test_queue和test_exchange绑定没有路由密钥,它会正常工作但如果你在' test_queue ' 上发布消息,将使用默认的交换和路由密钥.然后在消息队列尝试到期后使用某个默认路由密钥将该死信息传递给dead_exchange,并且消息不会进入该队列.
如果要在死信交换上使用自定义路由密钥,则必须x-dead-letter-routing-key在声明工作队列时设置(在您的情况下test1),否则将使用默认路由密钥.在您的情况下,RabbitMQ代理检测循环并简单地丢弃被拒绝的消息.
你需要的是在队列上设置x-dead-letter-exchange=dead.letter.test和x-dead-letter-routing-key=dead.letter.queue参数test1.
| 归档时间: |
|
| 查看次数: |
20965 次 |
| 最近记录: |