event-handling - 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
推荐阅读
- c# - getExtensionValue x509certificate 空引用?
- javascript - 如何将对象数组转换为带有键的数组数组
- php - 如何在不从模型重命名的情况下为 laravel 数据表重命名背包中的列?
- api - 使用节点 Js 对 REST API 进行单元测试
- web-deployment - Sitefinity 部署到生产服务器后开始升级
- c - 运行时错误:无法正确输出链表
- angular - 如何从打字稿文件中隐藏 mat-checkbox
- html - 清除垫选择选择角材料
- python - Jinja - 电子邮件模板,带变量的日期时间格式
- mysql - 在mysql中添加列,并与现有列具有相同的数据