我正在使用Spring AMQP v1.4.2,并试图找到一个发送方法,可能在RabbitTemplate中,该方法会阻塞线程,直到从服务器接收到确认,以确保我们不会丢失消息。
我看到了sendAndReceive()
方法,但它以RPC样式等待回复消息,而我只想在通道上等待确认。我知道我可以使用setConfirmCallback()
方法,但这意味着它不是同步的,当确认到达时,我可能会在另一个线程上结束,我将失去我的线程本地,即许多Spring好东西。
在春季AMQP中有实现这一目标的方法吗?
RabbitMQ通过使用异步发布获得了巨大的性能优势。正如您所说,您可以配置发布者确认以获得消息已传递到队列的异步确认。
如果你真的想阻止,你可以在RabbitTemplate
上使用setChannelTransacted(true)
;则CCD_ 5将阻塞直到消息在队列中得到保护。