如何使用Java和Python客户端停止使用RabbitMQ?

noi*_*cko 3 python java rabbitmq pika

我有我使用的Java和Python客户端channel.basicConsume().在某些时候,我想在不停止整个计划的情况下阻止那些消费者.

在使用Pika的Python中,我已经channel.stop_consuming()调用了调用,但是那些会产生我忽略的错误.似乎工作

在Java中,我不知道如何执行此操作,因为stop_consume()似乎不可用.

我看到的所有文档都谈到了创建消费者的所有方法,但我似乎无法找到任何显示如何阻止它们的方法.

最好的方法是什么?

its*_*ire 8

对应部分basic_consumebasic_cancel.当rabbitmq完成取消时,basic_cancel将触发提供的on_basic_cancel_ok回调函数.在短时间内做好准备,您可能仍会收到一些消息.

见:皮卡海峡


rob*_*olf -2

您应该在线程中使用,因此只需中断该线程并让程序的其余部分继续运行

Thread t = new Thread(){
  public void run(){
    //consumer is in here
  }
};
t.start();

// somewhere else later
t.interrupt();
Run Code Online (Sandbox Code Playgroud)

您可能需要Thread t在其他地方购买它作为对象的字段而不是局部变量

  • **这是一个可怕的解决方案:** 正如 @itsafire 提到的那样,它使客户端处于潜在危险状态,并在服务器上留下资源(队列)泄漏,顺便说一句,他的答案是正确的。 (3认同)