RabbitMQ amqp-client库是否可以取消nextDelivery?我有一个已经调用consumer.nextDelivery()的线程,该调用正在等待队列的响应。我想要的是从另一个线程停止此操作。 channel.basicCancel仅在当前的nextDelivery调用返回后才取消,这不正是我想要的,因为该应用程序处于无法对收到的传递执行任何操作的状态。

一段时间以来,我一直在寻找解决方案,但现在我误解了RabbitMQ,因为找不到与我的问题相符的搜索结果。

最佳答案

我想要从另一个线程停止此操作


个人建议:请勿这样做。

从注释中收集的信息看来,您正在将邮件接收与邮件接收分开。我的建议是将两者合并。并使用ExecutorService包裹它们。

当您需要关闭整个程序时,请在.shutDown()上调用ExecutorService:这意味着无法将其他任务提交给该执行。

由于接收/处理过程现已合并,这意味着您永远不会处于接收消息的状态,但无法再进行处理。

08-05 17:10