RabbitMQ amqp-client库是否可以取消nextDelivery
?我有一个已经调用consumer.nextDelivery()
的线程,该调用正在等待队列的响应。我想要的是从另一个线程停止此操作。 channel.basicCancel
仅在当前的nextDelivery
调用返回后才取消,这不正是我想要的,因为该应用程序处于无法对收到的传递执行任何操作的状态。
一段时间以来,我一直在寻找解决方案,但现在我误解了RabbitMQ,因为找不到与我的问题相符的搜索结果。
最佳答案
我想要从另一个线程停止此操作
个人建议:请勿这样做。
从注释中收集的信息看来,您正在将邮件接收与邮件接收分开。我的建议是将两者合并。并使用ExecutorService
包裹它们。
当您需要关闭整个程序时,请在.shutDown()
上调用ExecutorService
:这意味着无法将其他任务提交给该执行。
由于接收/处理过程现已合并,这意味着您永远不会处于接收消息的状态,但无法再进行处理。