了解 ZeroMQ

问题描述 投票:0回答:2

正如我在上一篇文章中所问的,我希望能够使用不同语言编写的程序或函数在它们之间进行通信。

我最近遇到了 Zeromq,我试图弄清楚这是否可以帮助我,因为它提供了某种套接字。 例如,zeromq 可以在用 python 编写的程序与用 C++ 编写的程序或函数之间交换数据(或传递参数)吗?或者它的功能是否完全不同?

zeromq
2个回答
3
投票

ZeroMQ 是套接字的抽象。它是跨平台的,并且有很多语言绑定:我个人不知道任何语言没有 ZeroMQ 绑定。

所以,是的,您可以使用 ZeroMQ 在 Python 编写的程序和 C++ 编写的程序之间进行通信。

我建议阅读zguide,因为它包含很多有关 ZeroMQ 的非常有用的信息。

PyZMQ 可用作 Python 绑定,zmqpp 可用作 C++ 代码。请注意,对于 C++ 代码,您还可以直接使用 cppzmq 或 zmq C API。我建议使用 zmqpp,因为它的级别更高并且(恕我直言)更易于使用。


1
投票

A:哦,是的,这就是
ZeroMQ
nanomsg
框架的力量

这两者都不是套接字,而是在零-*的背景下创建的行为——一组勇敢的格言,S可扩展F正常C沟通P阿特恩Framework 的设计、开发和微调以满足。

这将使您能够组装自己的快速且智能的消息传递层。

问:下一步最好的步骤是什么?

不管你的第一印象如何,只是忘记你所知道的关于套接字和多线程同步技巧的任何东西。

是的,宁愿忘记并在“绿色领域”上建立新的理解。

拿 Pieter HINTJENS 的“Code Connected,第 1 卷”(可在 PDF 中访问)并花几周的时间来理解 Pieter 为这本 ZeroMQ 必读圣经所写的动机和典型错误。

代码片段是危险,以防您没有获得或完全错过更大图片的完整上下文

相信我。我无法给你更好的建议。您可以查看我关于 ZeroMQ 和 nanomsg 的其他帖子,看看其中的区别。

您一定会从这本书中受益,ZeroMQ 将为您提供许多您永远不会(相信我永远不会)准备好自己从头开始编程的能力。 力量是如此巨大(如果重新利用得好的话).


nota bene

对于现实世界的进程间通信,有一个小问题需要注意。各种 ZeroMQ 版本的互操作性。是的,ZeroMQ 的力量是巨大的,但是,有必要在消息传递层中保留内置的版本控制,以便解决某些平台没有可用的“较新”版本的更新路径的情况。通过将交易系统与组件重新集成来解决这个问题,其中旧的

zmq.__version__ == 2.1.11
是必要的,而最近的版本远高于
14.x.y
,以确保 100% 端到端向后兼容。

尽管如此,整体潜力仍然巨大,坚持下去并完成工作是有意义的。总帐对此。

© www.soinside.com 2019 - 2024. All rights reserved.