我正在构建一个系统,我希望将RabbitMQ用作主要的消息传递机制。
我的系统需要非常强有力的信息传递保证,因为消息必须到达目的地并得到确认,否则我希望它们会被重新排队并重新发送。
用例是维护两个系统之间的最终一致性
我还想避免在我的应用程序中管理有关消息的任何状态。
我知道发布持久性消息并不能100%保证它是持久保存到磁盘的,因为不会为每条消息调用fsync(2)。
因此,我的问题是 - 我可以使用RabbitMQ作为100%可靠的*消息传递机制吗?
我已经阅读了有关事务的内容,但除了2011 blogpost之外找不到任何内容,它也没有明确说明每个消息都执行了fsync(2)
,或者如果没有成功则发生(同步)故障。
*可靠我的意思是最终应该传递消息。重复的消息是可以接受
我可以使用RabbitMQ作为100%可靠的消息传递机制吗?
是的,使用持久性消息,发布者确认和消费者确认 - link。
当您的发布者收到确认消息时,该消息已写入并同步到磁盘。
注意:RabbitMQ团队监控the rabbitmq-users
mailing list,有时只回答StackOverflow上的问题。