c++ - 关于 ZeroMQ 和使用替代存储来存储消息

标签 c++ linux sockets zeromq

我最近了解到,连接到另一个套接字的 ZeroMQ 套接字(我正在使用 PUSH/PULL)会继续推送数据,即使拉取数据的套接字脱机或断开连接也是如此。

我的理解是一切都在内存中累积,一旦套接字再次在线,它就会从停止的地方继续拉动。

有什么方法可以设置 ZeroMQ 使用文件存储而不是内存来实现这种行为?如果是这样,它是否是事件驱动的,告诉套接字何时意识到 Puller 的重新连接断开?

我喜欢这个概念,但我害怕过度使用内存,我也不想使用可能阻塞套接字的水印。

我在 C/C++ 下使用 ZeroMQ for Linux。

最佳答案

我相信没有这样的内置功能。如果你想将消息存储到一个文件中,你将不得不自己实现它。

根据经验(我相当广泛地使用 ZMQ)我会说你的解决方案更复杂而且没有必要。 如果您真的觉得 RAM 会成为问题,更好的解决方案是创建一个 SWAP 文件并使用 cgroups 限制进程对 RAM 的使用。 (example)。 结果将是您的进程将使用您允许的任何最大 RAM,然后使用 SWAP RAM(基本上是一个文件)来存储排队的消息。

关于c++ - 关于 ZeroMQ 和使用替代存储来存储消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49795764/

相关文章:

c++ - 向某些屏幕位置写入宽字符时,ncurses 会崩溃

linux - 是否可以结合使用 tail 和 grep?

angularjs - IONIC未从服务器接收套接字数据

c++ - 绘画渲染,剪裁线,我有一个错误

c++ - std::is_class在引用类上为false

c++ - 如何追踪导致段错误的原因?

python - 相同的权限,不同的权利?

linux - 琐碎的 linux 声音播放

java聊天室无法从多个客户端发送消息

javascript - 如何将二进制数据从 C++ 发送到 Javascript