我正在构建一个新应用程序,该应用程序从许多外部设备接收数据,并且需要将其提供给许多不同的组件。 ZeroMQ似乎是为我的体系结构的“数据总线”方面专门设计的。
我最近意识到zmq STREAM套接字可以连接到本机TCP套接字并发送/接收消息。在整个过程中都使用zmq具有很大的吸引力,但是我有一个问题,我不知道该如何解决。
需要设置我的设备之一。也就是说,我将套接字连接到它,向其发送一些配置信息,然后坐下来等待它向我发送数据。该设备还具有“重置”功能(在某些情况下很有用),需要重新发送配置信息。这样做取决于对套接字接口的设置/拆卸阶段的了解。我需要知道何时建立新连接,以便发送必要的配置消息。
zmq似乎是故意设计用来保护我不受该知识影响的。有什么方法可以做我想要的吗?还是应该为此接口使用常规套接字?
答案 0 :(得分:0)
好吧,事实证明,仔细阅读该手册(的正确版本)对您很有帮助。
建立连接后,应用程序将收到长度为零的消息。同样,当对等方断开连接(或连接断开)时,应用程序将收到零长度的消息。
我想剩下的就是消除连接和断开连接之间的歧义。如果其他人以前已经处理过这种情况,仍在寻求社区的建议。
答案 1 :(得分:0)
按照您自己的答案,我会犹豫地将零长度的连接/断开消息作为整个策略的依据-这似乎很脆弱。从您的问题中我不清楚,哪一端是永久性的,哪一端需要配置信息,但是我希望一端知道正在重置和重新连接,而一端需要配置来自对等方的信息,因此应该在需要时向其询问,并带有一条消息,对等方以请求的信息来对此进行响应。
如果对等方在接收到其他消息之前尚未获得所需的配置信息,则它可以将工作排队,也可以响应对配置的需求,然后由网络的其余部分处理适当地需要。
您不需要流/ tcp套接字来使其正常工作,它应该与更多标准的ZMQ套接字类型一起使用,只需要在应用程序中构建健壮性,而不是尝试从TCP / socket操作中免费获取它
如果我错过了您的要点,并且由于某些原因我建议的内容不起作用,则您必须提供有关网络拓扑的更多具体信息,以供其他任何人了解合适的解决方案。< / p>