繁体   English   中英

如何实现每个客户端一个消息队列?

[英]How to implement message Queue one per client?

我目前正在用Java实现对等消息传递应用程序。 目前,我只遇到一个问题。 在我的应用程序中,我想要一个消息队列,该消息队列将驻留在每个对等方中,而想要与其他对等方通信的其他对等方实际上会继续执行,并在其他对等方MQ(消息队列)中写入消息。

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

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

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

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

谁能建议我一个实现此目标的好方法。

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

您可能需要确定网络拓扑的方式,如果仅连接了2-3-4个对等方,则只需让每个对等方为每个其他对等方打开一个套接字即可。

如果预计会有许多对等方,则为每个对等方设置一个套接字将很困难甚至不可能,并且有必要使用不同的拓扑:

  1. 每个对等方仅了解其几个邻居,其他对等方可以通过使用某些路由逻辑从一个对等点跳到另一个对等点来访问。
  2. 另一个解决方案是在所有对等方都签入的地方设置一个集中节点(这是Skype或大多数其他IM网络的工作方式)。

我认为我可以为此目的使用RMI。 就我而言,每个对等方都将充当服务器并运行rmiregistry。 我的界面文件将包含用于填充消息队列的API。 其他对等方将使用RMI调用API来更新队列。 间接地,我的其他对等节点将更新要通信的对等节点上的消息队列。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM