【问题标题】:How to use Spring AMQP to read messages in a queue?如何使用 Spring AMQP 读取队列中的消息?
【发布时间】:2015-05-18 23:29:31
【问题描述】:

给定一个包含消息的队列,我如何使用 Spring AMQP 获取存储在该队列中的所有消息?注意,不问如何收听队列的问题。

【问题讨论】:

  • @GermannArlington 是的,我在那里找不到。提到的最接近的事情是使用AmqpTemplatereceive(String queueName) 方法,它只返回一条消息。
  • 您可能误解了消息传递机制背后的概念和思想:它保证每条消息(单独)的传递,因此它必须一次向receive()提供一条消息的功能,有否则,没有办法让您的批次中只有几条消息失败。

标签: java spring rabbitmq spring-amqp


【解决方案1】:

抱歉,我认为这样的解决方案没有任何意义。 收听队列中的所有消息确实更好。如果您需要 browse 之类的东西 - 获取并重新排队(或 nack),那么是的,AmqpTemplate.receive() 是不错的选择。您应该将该调用包装到 TX(例如,仅使用 RabbitTransactionManager),执行 while(true) 直到 receive() 返回消息并最终返回 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly()

【讨论】:

  • 我的用例是在 UI 中显示排队的消息,并允许用户选择他们想要处理的消息。
  • 嗯,这是不可能的。它不适合消息传递和排队的概念和原则。队列不像数据库中的表:您可以消费或不消费消息,但没有任何 select 选项。这样就不会是 queue
最近更新 更多