java - Java中不可靠网络使用哪种消息服务

标签 java networking jms activemq

我有一个节点网络。节点必须能够相互发送消息。消息仅在节点之间发送(即不广播)。节点知道它们必须向其发送消息的节点的地址。节点不一定知道它们将从谁那里接收信息。某些节点(称为主节点)可能会从大量节点(> 100k)接收消息并向其发送消息。

我希望能够将持久消息从一个节点发送到另一个节点。我希望即使在不可靠的网络上也能异步发生。 IE。我希望消息服务为我处理重新发送、确认等。

我尝试将 ActiveMQ 与代理的静态网络一起使用(我的小设置中只有 2 个节点),如 http://activemq.apache.org/networks-of-brokers.html 中所述。 。这对于我的设置来说效果很好,但我预计将有大约 100k 个节点与一个节点(称为主节点)关联,然后该节点必须运行 100k 个代理才能将消息转发到所有关联节点。所有节点可能会偶尔发送,并且主节点有时可能必须发送到多个(>10k)其他节点(注意:没有广播,因为它们都收到不同的消息)。

我想象中使用的一个设置可以在这张图片中看到 http://i154.photobucket.com/albums/s260/sheep_p/communication.png ,其中圆柱体表示队列。这里每个节点都有一个入站和一个出站队列。

可以使用什么技术来实现这一点以及该技术需要什么样的配置?

该技术必须与 Java 配合使用,并拥有免费的私有(private)或学术许可证。

最佳答案

我从未遇到过可以做到这一点的现成技术。

解决这个问题的一种方法可能是在内部使用队列 (ActiveMQ),如您所图示的那样,并在外部使用 Netty.io 或 Jersey 等服务创建 API(我没有使用 Netty 的经验,但已将 Jersey 用于类似的应用程序)。虽然这需要一些编码,但这不是很好吗? :)

关于java - Java中不可靠网络使用哪种消息服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13359510/

相关文章:

java - 在 JMS 队列上发布消息?

java - 更新 Java\jre7\lib\security 下的 JAR 库

java - 如何获取与项目选择对应的不同工作空间

ruby - 如何防止 "The connection was reset"错误?

Python 面向消息的中间件(即 Python 的 JMS)

java - 从 Weblogic Server DEQUEUE Oracle 高级队列

java - 商店中购买最多的商品 SQL

java - 比较Java中的两个日期,一个从MySQL获取

java - Android Socket fatal error

networking - 在 docker-compose.yml 中绑定(bind)主机端口时无法将服务扩展到多个容器