我使用channel.basicConsume()
的Java和Python客户端。在某些时候,我想在不停止整个计划的情况下阻止那些消费者。
在Python中使用Pika我已经调用了channel.stop_consuming()
个调用,但这些调用会产生我忽略的错误。似乎工作
在Java中我不知道怎么做,因为stop_consume()似乎不可用。
我看到的所有文档都谈到了创建消费者的所有方法,但我似乎无法找到任何显示如何阻止它们的文档。
最好的方法是什么?
答案 0 :(得分:7)
basic_consume
的对应部分是basic_cancel
。当rabbitmq完成取消时,basic_cancel
将触发提供的on_basic_cancel_ok
回调函数。在短时间内做好准备,您可能仍会收到一些消息。
请参阅:Pika Channel
答案 1 :(得分:-2)
你应该在一个线程中消耗所以只是中断该线程并让你的程序的其余部分继续运行
Thread t = new Thread(){
public void run(){
//consumer is in here
}
};
t.start();
// somewhere else later
t.interrupt();
您可能需要让Thread t
在其他地方购买,将其作为对象的字段而不是局部变量