1

我目前在 java 中实现了一个点对点消息传递应用程序。目前我有点卡在一个问题上。在我的应用程序中,我想要一个消息队列,它将驻留在每个对等方中,而其他想要与其他对等方通信的对等方实际上继续前进并在其他对等方 MQ(消息队列)中写入消息。

例如。A 和 B 是网络中的两个不同的对等点/节点。

现在 A 想向 B 发送消息,然后它继续并将其消息写入 B 的队列。B 将继续从它自己的 MQ 中提取消息。

我不知道使用哪个 Java 库可以轻松实现这一点。

我对此进行了很多搜索,但从未找到合适的解决方案。

任何人都可以建议我实现这一点的好方法。

4

2 回答 2

0

从 A 到 B 的物理发送消息非常简单,只需打开套接字或使用诸如NettyApache Mina之类的非阻塞网络库。两者都提供了几个在其堆栈之上实现网络通信的示例。

您可能需要确定网络拓扑结构,如果只有 2-3-4 个对等点连接,您可以简单地让每个对等点为其他每个对等点打开一个套接字。

如果预计有许多对等点,则为每个点拥有一个套接字将是困难的甚至是不可能的,并且需要不同的拓扑:

  1. 每个对等点只知道它的几个邻居,其他对等点可以通过使用一些路由逻辑从对等点跳到对等点来到达。
  2. 另一种解决方案是拥有一个所有对等方都签入的集中节点(这是 Skype 或大多数其他 IM 网络的工作方式)。
于 2013-06-01T11:52:44.503 回答
0

我想我可以为此目的使用 RMI。在我的情况下,每个对等点都将充当服务器并运行 rmiregistry。我的接口文件将包含用于填充消息队列的 api。其他对等方将使用 RMI 调用 API 来更新队列。间接地,我的其他对等方将更新它要通信的对等方上的消息队列。

我不知道这是否是实现它的正确方法,仍然欢迎所有建议。

于 2013-06-03T17:20:56.943 回答