我想保证消息将被传递到代理,发布者的经典案例证实了这一点,当结合使用Spring Cloud Stream和RabbitMQ时。
当使用StreamBridge.send()
方法时,javadocs对方法的返回进行如下说明:
true if data was sent successfully, otherwise false or throws an exception
因此,这可能意味着这就是确认消息是否已被代理接收所需的全部内容。然而,如果您浏览RabbitMQ Binder文档,它会提到另一种完全不同的机制,该机制依赖于添加回调等,如下所示:https://docs.spring.io/spring-cloud-stream/docs/current/reference/html/spring-cloud-stream-binder-rabbit.html#publisher-confirms
所以问题是,这两个选项中哪一个是可靠的?只是返回StreamBridge.send()
调用,还是需要回调来确认给定消息的发布?
1条答案
按热度按时间anauzrmj1#
RabbitMQ是异步的,所以发送总是成功的。你可以使用事务,但是即使这样,发送也会成功,即使没有队列绑定到交换。
使用发布者确认(并检查返回的消息)。