我正在使用Spring AMQP v1.4.2并尝试在RabbitTemplate中找到一个阻止线程的发送方法,直到从服务器收到确认,以确保我们不要丢失信息。
我已经看过sendAndReceive()
方法,但它等待RPC样式的回复消息,而我只想等待频道上的确认。我知道我可以使用setConfirmCallback()
方法,但这意味着它不是同步的,当确认到达时我可能会在不同的线程上结束,我将丢失我的线程本地,即很多Spring好东西。< / p>
有没有在Spring AMQP中实现这个目标?
答案 0 :(得分:2)
RabbitMQ通过使用异步发布获得巨大的性能优势。正如您所说,您可以配置发布者确认以获得异步确认消息已传递到队列。
如果您确实要阻止,可以在setChannelTransacted(true)
上使用RabbitTemplate
; commit
将阻塞,直到消息在队列中得到保护。