0

我有一系列使用 JGroups 库相互通信的客户端,它们基本上创建了一个附加到集群名称的通信通道:

communicationChannel = new JChannel(AutoDiscovery.class.getResource("/resource/udp.xml"));
communicationChannel.connect("cluster1");

现在我希望他们首先列出要连接的可用集群,并让用户决定连接到哪个集群,而无需在上面的代码中硬连线集群的名称。显然 API 有 getName() 如果设置返回通道的逻辑名称,但没有检索设置集群的方法。

我虽然使用 org.jgroups.Message.getHeaders() 并读取标题会产生活动集群,但什么也没有。请问有什么帮助吗?

4

1 回答 1

0

没有办法找到当前可用的集群,我建议维护一些额外的状态来存储(在内存中)所有集群名称及其相关配置。

您可以做的事情是开发一个自定义协议(将其插入 GMS 下方),该协议执行以下操作: - 捕获(事件 evt):如果 evt.getType() == Event.CONNECT***(4 个事件),获取集群名称 ((String)evt.getArg()) 并将其添加到集合 - 捕获 (Event evt): 如果 evt.getType() == Event.DISCONNECT,获取当前集群名称并将其从放

这不会给你配置信息;如果你继承 JChannel 并重写 connectXXX() 和 disconnect(),你也可以得到这个。

于 2013-04-24T06:12:30.313 回答