我是ZeroMQ的新手,(并且通常使用套接字进行编程),但我正尝试在ZeroMQ中实现(在Java中)对等模型。我想要的是当节点上线时,它向整个网络广播“我在这里,你可以通过这个地址联系我:......”消息。
我在想,如果网络中出现2个或更多节点,他们就可以找到对方而无需通过已知端点。
有没有人对如何实现这一点有任何想法? ZeroMQ甚至可以实现这一点吗?
答案 0 :(得分:4)
使用zmq无法满足您的要求。没有机制(没有已知和定义的端点)允许您“知道”发布者何时联机并且其消息已准备好订阅。
话虽这么说,使用XPub and XSub路由器(需要一个已知的端点)设置这种东西是非常简单的。您还可以使用REQ / REP套接字创建所有客户端连接的自己的“端点”。这将允许您拥有一个中心(实际上是directory service),然后您可以连接点对点订阅/发布连接(这将使您的网络重复保持最低)。
答案 1 :(得分:0)
您可能希望使用UDP执行此操作:
您可能希望查看https://github.com/stanwu/udp-broadcast
的C示例答案 2 :(得分:0)
我在局域网上的现有系统中使用UDP。它运作良好。您必须注意的唯一问题是UDP数据包不能保证传送。他们实际上会迷路,所以你需要考虑重复广播。您还会收到数据包碎片,因此请确保消息很小,但您只需发送足够的信息即可为ZMQ或TCP或RabbitMQ
或其他任何内容建立连接。其他潜在的问题是防火墙和VPN。