我正在构建一个系统,我想在其中使用 RabbitMQ 作为主要的消息传递机制。
我的系统需要非常强大的消息传递保证,例如,消息必须到达目的地并得到确认, 否则我希望他们重新排队,然后重新交付。
用例维护两个系统之间的最终一致性
我还想避免在我的应用程序中管理有关消息的任何状态。
我知道发布持久消息并不能 100% 保证它已持久保存到磁盘,因为不会为每条消息调用 fsync(2)。
因此,我的问题是 - 我可以将 RabbitMQ 用作 100% 可靠* 消息传递机制吗?
我读过有关交易的信息,但除了 2011 blogpost 之外找不到任何内容它也没有明确说明 fsync(2)
对每条消息都执行,或者如果不成功则发生(同步)失败。
* 可靠 我的意思是消息最终应该始终传递。重复的消息是可以接受的。
最佳答案
Can I use RabbitMQ as a 100% reliable message passing mechanism?
是的,使用持久消息、发布者确认和消费者确认 - link .
当您的发布者收到确认消息时,消息已写入并同步到磁盘。
注意: RabbitMQ 团队监控 the rabbitmq-users
mailing list并且只是偶尔在 StackOverflow 上回答问题。
关于rabbitmq - 有没有一种方法可以使用 RabbitMQ 以 100% 的交付保证来传输数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52144091/