我犯了一个错误:现在两个队列都明确绑定到某个交易所,我可以为每个队列编辑。这些队列中的一个队列必须绑定到默认交换。现在,当我尝试将该队列的交换值改为空字符串时,它抛出了一个异常。
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来绑定队列到defaultChange吗?我使用Java RabbitMQ客户端库5.6.0
首先,我们需要了解什么是默认交换。
默认的交换是一个直接的交换,经纪人没有预先声明名称(空字符串)。它有一个特殊的属性,使得它对简单的应用非常有用:每一个被创建的队列都会自动与它绑定一个路由键,这个路由键与队列名称相同。
所以基本上,换句话说,如果你创建了一个没有显式交换绑定的队列,该队列就会有一个与默认交换创建的自动绑定。
在你的问题中,从你的描述来看,你有两个队列(比方说A和B),并且你不小心将两个队列都绑定到了一个交易所(比方说test.exchange)。与其对 "default.exchange "进行修改,您应该做的是删除 "default.exchange"。约束力 与您交换的A或B队列的 测试.交流.
请检查 "apibindings "相关的apis上的。rabbitMQ Api指南 或者你可以简单地登录到rabbit管理控制台,把绑定也删除掉。