处理ZeroMQ中丢失的交易/数据?

时间:2014-03-28 16:30:21

标签: zeromq

我无法看到常见问题和文档。如果断电会怎么样? zeromq会忘记一切吗?是否所有消息都作为事务存储在硬盘上?可以说我有一个包含源代码的站点。让我们说有5个人在5个不同的大型项目上点击下载拉链,我需要一段时间来拉链。让我们说我将它们转发到一个页面,说我们会在它准备就绪时给你发电子邮件。电涌激增,机器重新启动。

如何恢复和处理这些消息?在我的脑海中,我认为1)我必须发送消息2)ZeroMQ必须以某种方式存储它3)客户端必须接收消息并将其标记为挂起4)另一个客户端应该采取不同的消息来处理5)客户端要么完成发送数据/回复或死亡,zeromq更改等待未处理。

如何处理不应丢失的数据?我不认为我想将它存储在ACID数据库中?

1 个答案:

答案 0 :(得分:3)

ZeroMQ不会将消息持久存储到存储设备,部分原因是因为效率非常低,所以您必须自己处理。

如果下游连接中断(断电,网络故障等),则ZeroMQ将缓冲数据,直到连接恢复为止。但是,缓冲区空间是有限的,并且取决于您的吞吐量,可能根本不够。我工作的公司需要解决这个问题,因此我们使用内存映射文件来缓冲数据,这非常有用。

避免任何类型数据丢失的最佳选择可能是采取与我们所做的类似的路线。使用请求/回复是保证下游接收已发送消息的最佳方式。

如果数据丢失是关键任务,那么有一大堆UPS解决方案可以帮助减少停电,只要程序和内存保持活动,ZeroMQ通常非常擅长处理错误情况。