Java 您可以远程取消rabbitmq使用者吗?

Java 您可以远程取消rabbitmq使用者吗?,java,rabbitmq,Java,Rabbitmq,我正在阅读关于rabbitmq中的Channel.basicCancel操作的文档。文件说,一种可能的取消情况是消费者在其监听的同一频道上发送取消信号 这是唯一的可能性吗?您能否取消在不同通道/连接/进程上运行的远程使用者 我正在尝试从另一个进程发送取消请求。当我这样做时,它以一个异常java.io.IOException:Unknown consumerTag结束,就像这样的操作仅限于取消本地消费者(在自己的频道或连接上) 更新: 我注意到这个“未知的consumerTag”异常是com.ra

我正在阅读关于rabbitmq中的
Channel.basicCancel
操作的文档。文件说,一种可能的取消情况是消费者在其监听的同一频道上发送取消信号

这是唯一的可能性吗?您能否取消在不同通道/连接/进程上运行的远程使用者

我正在尝试从另一个进程发送取消请求。当我这样做时,它以一个异常
java.io.IOException:Unknown consumerTag
结束,就像这样的操作仅限于取消本地消费者(在自己的频道或连接上)

更新:

我注意到这个“未知的consumerTag”异常是com.rabbitmq.client.impl.ChannelN.basicCancel(字符串)内部初始验证的结果:


但是仍然可能有一些rpc调用实现了这一点…

RabbitMQ团队监视并有时只回答有关StackOverflow的问题


文档是正确的,您必须从消费者自己的频道/连接中取消消费者

其他选项包括让您的消费者意识到“取消消息”,这将导致他们停止自己,或者使用API来关闭与之相关的所有频道

 Consumer originalConsumer = (Consumer)this._consumers.get(consumerTag);
 if (originalConsumer == null) {
   throw new IOException("Unknown consumerTag");
 }
 ...