您如何以编程方式为多播发现机制配置hazelcast?
细节:
该文档仅提供TCP/IP的示例并且已过时:它使用不再存在的Config.setPort().
我的配置看起来像这样,但发现不起作用(即我得到输出"Members: 1":
Config cfg = new Config();
NetworkConfig network = cfg.getNetworkConfig();
network.setPort(PORT_NUMBER);
JoinConfig join = network.getJoin();
join.getTcpIpConfig().setEnabled(false);
join.getAwsConfig().setEnabled(false);
join.getMulticastConfig().setEnabled(true);
join.getMulticastConfig().setMulticastGroup(MULTICAST_ADDRESS);
join.getMulticastConfig().setMulticastPort(PORT_NUMBER);
join.getMulticastConfig().setMulticastTimeoutSeconds(200);
HazelcastInstance instance = Hazelcast.newHazelcastInstance(cfg);
System.out.println("Members: "+hazelInst.getCluster().getMembers().size());
Run Code Online (Sandbox Code Playgroud)
如果我偶然发现MulticastTimeout,我要么得到"Members: 1"或者
2013年12月5日下午8:50:42 com.hazelcast.nio.ReadHandler警告:[192.168.0.9]:4446 [dev] hz._hzInstance_1_dev.IO.thread-in-0关闭套接字到端点地址[192.168.0.7] :4446,原因:java.io.EOFException:远程套接字已关闭!2013年12月5日下午8:57:24 com.hazelcast.instance.Node严重:[192.168.0.9]:4446 [dev]无法加入群集,关闭!com.hazelcast.core.HazelcastException:300秒内无法加入!
如果我将配置更改为以下内容,我仍然只能获得1个成员:
Config cfg = new Config();
NetworkConfig network = cfg.getNetworkConfig();
network.setPort(PORT_NUMBER);
JoinConfig join = network.getJoin();
join.getMulticastConfig().setEnabled(false);
join.getTcpIpConfig().addMember("192.168.0.1").addMember("192.168.0.2").
addMember("192.168.0.3").addMember("192.168.0.4").
addMember("192.168.0.5").addMember("192.168.0.6").
addMember("192.168.0.7").addMember("192.168.0.8").
addMember("192.168.0.9").addMember("192.168.0.10").
addMember("192.168.0.11").setRequiredMember(null).setEnabled(true);
//this sets the allowed connections to the cluster? necessary for …Run Code Online (Sandbox Code Playgroud)