RabbitMQ + Spring集成。队列大小为1,仅在覆盖时删除

时间:2017-12-14 15:55:44

标签: java rabbitmq spring-integration amqp spring-integration-amqp

我想现在是否可以用RabbitMQ和Spring Integration实现这个想法:

  1. 一个队列,有1条消息的能力。
  2. 消费者会询问此消息,如果它存在于队列中,它将被传递给他们,如果没有,他们会得到一个空或错误。
  3. 此消息(如果存在于队列中)不会因为已下载而被删除,只有当生产者在队列中放入另一条新消息时才会被删除。
  4. 祝你好运!

1 个答案:

答案 0 :(得分:1)

这样的事情:

@Transactional
public Message getMessageFromQueue(String queue) {
    try {
        return this.rabbitTemplate.receive(queue);
    }
    finally {
        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
    }
}

使用事务范围,我们将在事务中轮询队列。使用setRollbackOnly()我们rallback TX,因此,将消息返回队列。