我是ZeroMQ的新手(通常使用套接字进行编程),但我试图在ZeroMQ中实现(使用Java)一个点对点模型。我想要的是,当一个节点上线时,它会向整个网络传播一个“我在这里,你可以在这个地址找到我......”的消息。zeromq广播到整个网络
我在想,如果2个或更多的节点出现在网络上,他们将能够找到彼此而不必通过已知的端点。
有没有人有任何想法,我怎么能做到这一点?这是甚至有可能与ZeroMQ?
我是ZeroMQ的新手(通常使用套接字进行编程),但我试图在ZeroMQ中实现(使用Java)一个点对点模型。我想要的是,当一个节点上线时,它会向整个网络传播一个“我在这里,你可以在这个地址找到我......”的消息。zeromq广播到整个网络
我在想,如果2个或更多的节点出现在网络上,他们将能够找到彼此而不必通过已知的端点。
有没有人有任何想法,我怎么能做到这一点?这是甚至有可能与ZeroMQ?
您要求的内容不能用zmq完成。没有一种机制(没有已知和定义的端点)可以让你'知道'发布者何时联机并且其消息可以订阅。这就是说,使用XPub and XSub路由器(它需要一个已知的端点)来设置此类排序是相当简单的。您还可以使用REQ/REP套接字创建所有客户端连接到的自己的“端点”。这将允许你有一个中央(本质上是directory service),然后你可以连接点到点的订阅/发布连接(这将保持你的网络重复最低)。
您可能需要使用UDP做这样的:
有你可能想看看https://github.com/stanwu/udp-broadcast
我在局域网上的现有系统中使用UDP。它运作良好。您必须注意的唯一问题是UDP数据包不能保证传输。他们实际上会迷路,所以你需要重复播放。您还会收到数据包碎片,因此请确保消息很小,但您只需发送足够的信息来建立ZMQ,TCP或RabbitMQ
或其他任何连接。其他潜在的问题是防火墙和VPN。