如何在Java和Python客户端中停止RabbitMQ的消费?
我有用Java和Python写的客户端,都是通过channel.basicConsume()
来接收消息的。到某个时候,我想停止这些消息接收者,但又不想停止整个程序。
在Python中,我使用Pika库,调用了channel.stop_consuming()
来停止接收,但这会产生一些错误,我选择忽略这些错误,似乎还是能正常工作。
在Java中,我不太确定该怎么做,因为没有找到类似的stop_consume()
方法。
我看到的文档大多讲的是如何创建消息接收者,但我找不到关于如何停止它们的相关内容。
那么,最好的解决办法是什么呢?
2 个回答
-2
你应该在一个线程里进行处理,所以只需要中断那个线程,其他的程序可以继续运行。
Thread t = new Thread(){
public void run(){
//consumer is in here
}
};
t.start();
// somewhere else later
t.interrupt();
你可能需要让Thread t
在其他地方也能用,可以把它作为对象的一个属性,而不是一个局部变量。
9
与 basic_consume
相对应的功能是 basic_cancel
。当你调用 basic_cancel
时,它会在 RabbitMQ 完成取消操作后,触发你提供的 on_basic_cancel_ok
回调函数。不过要注意,在这段时间里,你可能还会收到一些消息。
更多信息请查看: Pika Channel