在虚拟主机“/”中找不到 RabbitMQ Exchange

问题描述

我正在尝试在我的 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',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','retry-2')

但是当我启动服务器时,我收到此错误

Error: Channel closed by server: 404 (NOT-FOUND) with message "NOT_FOUND - no exchange 'dlx-PAYMETS' in vhost '/'"

当我检查我的 rabbitmq 管理仪表板时,我可以看到已经创建了交换和必要的队列。根据我的理解,交换是幂等的,这意味着如果它不存在,它将被创建,如果它存在,只要交换属性没有变化,交换应该保持不变。所以我很困惑为什么会发生这种情况。我可能做错了什么?我该如何解决这个问题?非常感谢!

解决方法

DLX-PAYMETS 好像有一个拼写错误,缺少 N。您已经创建了一个名为 DLX-PAYMENTS 的交易所。