我有一系列使用JGroups库相互通信的客户端,它们基本上创建了一个附加到集群名称的通信通道:
communicationChannel = new JChannel(AutoDiscovery.class.getResource("/resource/udp.xml"));
communicationChannel.connect("cluster1");
现在我希望他们首先列出要连接的可用群集,并让用户决定连接到哪个群集,而不用如上所述在代码中硬连接群集的名称。 显然,API有getName(),如果设置了,则返回通道的逻辑名称,但是没有方法可以检索设置集群。
我虽然使用org.jgroups.Message.getHeaders()并读取标题会产生活动集群,但没有。 有什么帮助吗?
答案 0 :(得分:0)
无法找到当前可用的群集,我建议保留一些额外的状态,用于存储(内存中)所有群集名称及其相关配置。
一旦你可以做的事情就是开发一个自定义协议(在GMS下面插入它),它执行以下操作: - 捕获(事件evt):如果evt.getType()== Event.CONNECT ***(4个事件),获取集群名称((String)evt.getArg())并将其添加到集合中 - 捕获(事件evt):如果evt.getType()== Event.DISCONNECT,抓取当前的群集名称并将其从集合中删除
这不会给你配置信息;你可以得到这个,如果你继承JChannel并覆盖connectXXX()和disconnect()。