package net.johnewart.gearman.server.cluster.config; import com.hazelcast.config.*; import com.hazelcast.core.Hazelcast; import com.hazelcast.core.HazelcastInstance; import java.util.LinkedList; import java.util.List; public class HazelcastConfiguration { private List<String> hosts = new LinkedList<>(); private HazelcastInstance hazelcast; private int port; public int getPort() { return port; } public void setPort(int port) { this.port = port; } public List<String> getHosts() { return hosts; } public void setHosts(final List<String> hosts) { this.hosts = hosts; } public HazelcastInstance getHazelcastInstance() { if (hazelcast == null) { Config cfg = new Config(); NetworkConfig network = new NetworkConfig(); network.setPort(getPort()); network.setPortAutoIncrement(true); cfg.setNetworkConfig(network); JoinConfig join = network.getJoin(); if(getHosts() != null && getHosts().size() > 0) { System.err.println("Using unicast config!"); join.getMulticastConfig().setEnabled(false); for(String host : getHosts()) { join.getTcpIpConfig().addMember(host); } join.getTcpIpConfig().setEnabled(true); } else { System.err.println("Using multicast config!"); join.getTcpIpConfig().setEnabled(false); join.getMulticastConfig().setEnabled(true); join.getMulticastConfig().setMulticastTimeoutSeconds(15); join.getMulticastConfig().setMulticastGroup("224.2.2.3"); join.getMulticastConfig().setMulticastPort(54327); //cfg.setProperty("hazelcast.initial.min.cluster.size","2"); //join.getMulticastConfig().setMulticastGroup(MULTICAST_ADDRESS); //join.getMulticastConfig().setMulticastPort(PORT_NUMBER); } //network.getInterfaces().setEnabled(true).addInterface("10.45.67.*"); /* MapConfig mapCfg = new MapConfig(); mapCfg.setName("testMap"); mapCfg.setBackupCount(2); mapCfg.getMaxSizeConfig().setSize(10000); mapCfg.setTimeToLiveSeconds(300); MapStoreConfig mapStoreCfg = new MapStoreConfig(); mapStoreCfg.setClassName("com.hazelcast.examples.DummyStore").setEnabled(true); mapCfg.setMapStoreConfig(mapStoreCfg); NearCacheConfig nearCacheConfig = new NearCacheConfig(); nearCacheConfig.setMaxSize(1000).setMaxIdleSeconds(120).setTimeToLiveSeconds(300); mapCfg.setNearCacheConfig(nearCacheConfig); cfg.addMapConfig(mapCfg);*/ hazelcast = Hazelcast.newHazelcastInstance(cfg); } return hazelcast; } }