【发布时间】:2021-05-19 05:25:03
【问题描述】:
我正在尝试在我的 Rabbitmq 设置中设置重试系统。为了实现这一点,我必须声明一些交换、队列并在它们之间创建必要的绑定。所以我有这种性质的东西
await subscriber.createExchange('TTL-PAYMENTS', 'direct')
await subscriber.createExchange('DLX-PAYMENTS', 'fanout')
await subscriber.createQueues('payments-retry-1-30s', 'DLX-PAYMENTS', 30000)
await subscriber.createQueues('payments-retry-2-50s', 'DLX-PAYMENTS', 50000)
await subscriber.bindExchanges('payments', 'DLX-PAYMETS')
await subscriber.bindExchanges('payments-retry-1-30s', 'TTL-PAYMETS', 'retry-1')
await subscriber.bindExchanges('payments-retry-2-50s', 'TTL-PAYMETS', 'retry-2')
但是当我启动服务器时,我得到了这个错误
Error: Channel closed by server: 404 (NOT-FOUND) with message "NOT_FOUND - no exchange 'DLX-PAYMETS' in vhost '/'"
当我检查我的 rabbitmq 管理仪表板时,我可以看到已经创建了交换和必要的队列。根据我的理解,交换是幂等的,这意味着如果它不存在,它将被创建,如果它存在,只要交换属性没有任何变化,交换应该保持不变。所以我很困惑为什么会这样。我可能做错了什么?我该如何纠正这个问题?非常感谢!
【问题讨论】:
-
显然有一个错字 - "DLX-PAYMETS"
标签: javascript node.js rabbitmq amqp