rabbitmq - 有没有一种方法可以使用 RabbitMQ 以 100% 的交付保证来传输数据?

标签 rabbitmq eventual-consistency reliable-message-delivery

我正在构建一个系统,我想在其中使用 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/

相关文章:

java - 由于 SocketException,RabbitMQ 新连接被拒绝

include - Erlang:无法包含 header

php - 在 CQRS 应用程序中强制执行验证/不变量

amazon-web-services - AWS DynamoDB 读后写一致性 - 它在理论上是如何工作的?

tcp - TCP(传输控制协议(protocol))是否提供至多一次、至少一次或恰好一次交付

rabbitmq - amqp/rabbitmq 中的立即标志和强制标志有什么区别?

bash - 使用 rabbitmq docker 镜像在 rabbitmq.config 中配置 ssl

docker - 带RabbitMQ的Amazon ECS