使用 Hazelcast,如果成员关闭并打印消息,我如何创建事件或捕获事件?

Using Hazelcast, how can i create event or catch if member is shutdown and print message?

这是我的来源,如果某些成员由于某种原因被关闭,我如何打印消息?我想我可以监听一些事件或某种动作,但如何...

import com.hazelcast.core.*; 
import com.hazelcast.config.*;

import java.util.Map;


/**  *  * @author alvel  */ public class ShutDown {
     public static void main(String[] args) {
        Config cfg = new Config();
        HazelcastInstance memberOne = Hazelcast.newHazelcastInstance(cfg);
         HazelcastInstance memberTwo = Hazelcast.newHazelcastInstance(cfg);
        Map<Integer, String> customerMap = memberOne.getMap("customers");
        customerMap.put(1, "google");
        customerMap.put(2, "apple");
        customerMap.put(3, "yahoo");
        customerMap.put(4, "microsoft");

        System.out.println("Hazelcast Nodes in this cluster"+Hazelcast.getAllHazelcastInstances().size());

        memberOne.shutdown();

         System.out.println("Hazelcast Nodes in this cluster After shutdown"+Hazelcast.getAllHazelcastInstances().size());

         Map<Integer, String> customerRestored = memberTwo.getMap("customers");
        for(String val:customerRestored.values()){
            System.out.println("-"+val);
        }

     } }

试试这个,它会在您的代码中添加几行和一个新的 class

public class ShutDown {

static {
    // ONLY TEMPORARY
    System.setProperty("hazelcast.logging.type", "none");
}

public static void main(String[] args) {
   Config cfg = new Config();
   HazelcastInstance memberOne = Hazelcast.newHazelcastInstance(cfg);
   //ADDED TO MEMBER ONE
   memberOne.getCluster().addMembershipListener(new ShutDownMembershipListener());
    HazelcastInstance memberTwo = Hazelcast.newHazelcastInstance(cfg);
   //ADDED TO MEMBER TWO
   memberTwo.getCluster().addMembershipListener(new ShutDownMembershipListener());
   Map<Integer, String> customerMap = memberOne.getMap("customers");
   customerMap.put(1, "google");
   customerMap.put(2, "apple");
   customerMap.put(3, "yahoo");
   customerMap.put(4, "microsoft");

   System.out.println("Hazelcast Nodes in this cluster"+Hazelcast.getAllHazelcastInstances().size());

   memberOne.shutdown();

    System.out.println("Hazelcast Nodes in this cluster After shutdown"+Hazelcast.getAllHazelcastInstances().size());

    Map<Integer, String> customerRestored = memberTwo.getMap("customers");
   for(String val:customerRestored.values()){
       System.out.println("-"+val);
   }

} 

static class ShutDownMembershipListener implements MembershipListener {

    @Override
    public void memberAdded(MembershipEvent membershipEvent) {
        System.out.println(this + membershipEvent.toString());
    }

    @Override
    public void memberAttributeChanged(MemberAttributeEvent arg0) {
    }

    @Override
    public void memberRemoved(MembershipEvent membershipEvent) {
        System.out.println(this + membershipEvent.toString());
    }
}
}

System.setProperty("hazelcast.logging.type", "none") 只是为了测试,以便更容易地看到发生了什么。