5

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

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

在 Java 中,我不确定如何执行此操作,因为 stop_consume() 似乎不可用。

我看到的所有文档都讨论了创建消费者的所有方法,但我似乎找不到任何显示如何阻止它们的东西。

解决此问题的最佳方法是什么?

4

2 回答 2

8

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

见:鼠兔频道

于 2013-07-17T10:55:20.367 回答
-2

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

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

// somewhere else later
t.interrupt();

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

于 2013-03-22T15:55:45.683 回答