gpt4 book ai didi

java - 有没有办法在 RabbitMQ 中显式地将队列绑定(bind)到默认交换?

转载 作者:行者123 更新时间:2023-12-01 16:30:32 24 4
gpt4 key购买 nike

我犯了一个错误:现在两个队列都明确绑定(bind)到某个交换,我可以为每个队列进行编辑。这些队列之一必须绑定(bind)到默认交换。现在,当我尝试将该队列的交换更改为空字符串时,它会引发异常:

Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=403, reply-text=ACCESS_REFUSED - operation not permitted on the default exchange, class-id=<..>, method-id=<..>)

我可以将一些特定值传递给方法 com.rabbitmq.client.Channel#queueBind 将队列绑定(bind)到 defaultChange 吗?我使用Java RabbitMQ客户端库5.6.0

最佳答案

首先,我们需要了解什么是默认交易所;

来自RabbitMQ Docs

The default exchange is a direct exchange with no name (empty string) pre-declared by the broker. It has one special property that makes it very useful for simple applications: every queue that is created is automatically bound to it with a routing key which is the same as the queue name.

所以基本上,换句话说,如果您创建一个没有显式交换绑定(bind)的队列,该队列将具有使用默认交换创建的自动绑定(bind)。

在你的问题中,从你的描述来看,你似乎有两个队列(比如说A和B),并且你不小心将这两个队列绑定(bind)到了一个交换器(比如说test.exchange)。您应该做的是删除队列 A 或 B 与您的交换 test.exchange绑定(bind),而不是对“default.exchange”进行更改。

请检查rabbitMQ Api Guides上的“/api/bindings”相关api或者您也可以简单地登录到兔子管理控制台并删除绑定(bind)。

关于java - 有没有办法在 RabbitMQ 中显式地将队列绑定(bind)到默认交换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62050222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com