如何解决Hazelcast LifecycleListener stateChanged 从不触发
我想跟踪 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。