java - RabbitMQ – 在等待响应时取消 consumer.nextDelivery

标签 java rabbitmq amqp

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

一段时间以来,我一直在寻找解决方案,现在我认为我对 RabbitMQ 有一些误解,因为我没有找到与我的问题相匹配的搜索结果。

最佳答案

What I want is to stop this from another thread

个人建议:不要这样做。

从评论中收集的信息来看,您似乎将消息接收与其处理分开了。我的建议是合并两者;并使用 ExecutorService 将它们包装起来。

当你需要关闭整个东西时,在 ExecutorService 上调用 .shutDown():这意味着没有其他任务可以提交给该执行。

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

关于java - RabbitMQ – 在等待响应时取消 consumer.nextDelivery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17511293/

相关文章:

java - 运行时无法将 JButton 添加到 JPanel

RabbitMQ - 一个消费者是否阻塞同一队列的其他消费者?

RabbitMQ已启动但无法访问管理界面

java - JMS 客户端确认模式下的保证交付如何工作?

rabbitmq - amqp/rabbitmq 中的立即标志和强制标志有什么区别?

java - 如何使用文件浏览器 Android Studio 将歌曲添加到我的歌曲播放列表?

java - 膨胀二进制 XML 文件时出错

rabbitmq - spring-RabbitMQ 手动监听队列

streaming - XMPP/AMQP/Websockets 与 Pusher/Beacon 推送?

java - 使用 Apache Axis 通过 SSL 调用客户端 Web 服务