有没有一种方法可以使用 RabbitMQ 以 100% 的交付保证来传输数据?
Is there a way to transport data with a 100% delivery guarantee using RabbitMQ?
我正在构建一个系统,我想在其中使用 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 并且有时只在 Whosebug 上回答问题。
我正在构建一个系统,我想在其中使用 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 并且有时只在 Whosebug 上回答问题。