Spring AMQP - 是否有只等待确认的同步阻塞发送方法?

Spring AMQP - Is there a synchronous blocking send method that only waits for confirm?

我正在使用 Spring AMQP v1.4.2 并试图找到一个发送方法,可能在 RabbitTemplate 中,它会阻塞线程直到 confirm从服务器接收以确保我们不会丢失消息。

我看过 sendAndReceive() 方法,但它等待 RPC 样式的回复消息,而我只想等待通道上的 confirm。我知道我可以使用 setConfirmCallback() 方法,但这意味着它不是同步的,当确认到达时我可能会在不同的线程上结束,我将失去我的线程局部变量,即很多 Spring 好东西。

有没有办法在 Spring AMQP 中实现这一点?

RabbitMQ 通过使用异步发布获得了巨大的性能优势。如您所说,您可以配置发布者确认以获取消息已传送到队列的异步确认。

如果真的要屏蔽,可以在RabbitTemplate上使用setChannelTransacted(true)commit 将阻塞,直到消息在队列中得到保护。