问题描述
我想跟踪 Hazelcast 的生命周期。默认日志带有事件 lke
INFO: [192.168.201.11]:5701 [MyApp] [4.1.2] [192.168.201.11]:5701 is STARTING
INFO: [192.168.201.11]:5701 [MyApp] [4.1.2] [192.168.201.11]:5701 is STARTED
所以我希望这些事件告诉我状态是 STARTING 或 STARTED 等
这是我的启动方式
var hzConfig = new Config();
hzConfig.setClusterName(clusterName);
hzConfig.setInstanceName(memberId);
instance = Hazelcast.newHazelcastInstance(hzConfig)
var lifecycleListener = new LifecycleListener();
lifecycleListenerId = instance.getLifecycleService().addLifecycleListener(lifecycleListener);
这是我的 LifecycleListener
public class LifecycleListener implements com.hazelcast.core.LifecycleListener {
@Override
public void stateChanged(LifecycleEvent lifecycleEvent) {
System.out.println("Lifecycle change: " + lifecycleEvent.getState());
}
}
都是非常基本的,但我的 LifeCycleListener 没有收到任何事件,无论是启动还是关闭。
知道我在这里缺少什么吗?
解决方法
你写的代码是正确的。您看不到日志的原因是您的 Hazelcast 实例在添加 LifecycleListener 之前启动。
试试下面的代码。
var hzConfig = new Config();
hzConfig.setClusterName(clusterName);
hzConfig.setInstanceName(memberId);
instance = Hazelcast.newHazelcastInstance(hzConfig)
var lifecycleListener = new LifecycleListener();
lifecycleListenerId = instance.getLifecycleService().addLifecycleListener(lifecycleListener);
Thread.sleep(5000);
instance.shutdown();
Thread.sleep(5000);
您应该会看到以下日志。
Lifecycle change: SHUTTING_DOWN
...
Lifecycle change: SHUTDOWN