在Java中使用哪种消息服务用于不可靠的网络

时间:2012-11-13 10:56:34

标签: java networking jms activemq

我有一个节点网络。节点必须能够相互发送消息。消息仅从节点发送到节点(即没有广播)。节点知道它们必须向其发送消息的节点的地址。节点不一定知道他们将从谁那里收到。一些节点(称为主节点)可以从非常多的节点(> 100k)接收消息并向其发送消息。

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

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

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

可以使用哪种技术来实现这一目标,以及需要采用何种配置技术?

该技术必须与Java一起使用,并拥有免费的私人或学术许可。

1 个答案:

答案 0 :(得分:1)

我从未遇到过可以做到这一点的开箱即用技术。

解决问题的一种方法可能是在内部使用Queues(ActiveMQ),在内部使用Netty.io或Jersey等服务创建API(我没有使用Netty的经验,但是使用了Jersey一个类似的应用程序),外部。这需要一些编码,但嘿不是那么好吗? :)