1

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

  1. 一个队列,可容纳 1 条消息。
  2. 消费者会请求这个消息,如果它存在于队列中,它将被传递给他们,如果不存在,他们会得到一个空或错误。
  3. 此消息(如果存在于队列中)不会因为已经下载而被删除,只有当生产者将另一条新消息放入队列时才会被删除。

此致!

4

1 回答 1

1

像这样的东西:

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

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

于 2017-12-14T16:20:26.013 回答