import com.hazelcast.config.Config;
import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.IMap;
import com.hazelcast.map.MapPartitionLostEvent;
import com.hazelcast.map.listener.MapPartitionLostListener;
public class ListenMapPartitionLostEvents {
public static void main(String[] args) {
Config config = new Config();
// might lose data if any node crashes
config.getMapConfig("map0").setBackupCount(0);
// keeps its data if a single node crashes
config.getMapConfig("map1").setBackupCount(1);
HazelcastInstance instance1 = Hazelcast.newHazelcastInstance(config);
HazelcastInstance instance2 = Hazelcast.newHazelcastInstance(config);
IMap<Object, Object> map0 = instance1.getMap("map0");
map0.put(0, 0);
map0.addPartitionLostListener(new MapPartitionLostListener() {
@Override
public void partitionLost(MapPartitionLostEvent event) {
System.out.println(event);
}
});
IMap<Object, Object> map1 = instance1.getMap("map1");
map1.addPartitionLostListener(new MapPartitionLostListener() {
@Override
public void partitionLost(MapPartitionLostEvent event) {
System.out.println("This line will not be printed! " + event);
}
});
instance2.getLifecycleService().terminate();
}
}