例子代码位置
https://github.com/lilihongjava/ignite_examples/tree/main/ignite-02
节点生命周期事件介绍
生命周期事件可以在节点生命周期的不同阶段执行自定义代码。
共有4个生命周期事件:
- BEFORE_NODE_START:Ignite节点的启动程序初始化之前调用;
- AFTER_NODE_START:Ignite节点启动之后调用;
- BEFORE_NODE_STOP:Ignite节点的停止程序初始化之前调用;
- AFTER_NODE_STOP:Ignite节点停止之后调用。
以下为添加一个自定义生命周期事件监听器的步骤
配置文件
IgniteConfiguration下添加自定义的类MyLifecycleBean
代码语言:javascript复制 <bean abstract="true" id="ignite.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
<!-- Set to true to enable distributed class loading for examples, default is false. -->
<property name="peerClassLoadingEnabled" value="true"/>
<!-- 节点生命周期 -->
<property name="lifecycleBeans">
<list>
<bean class="org.lovelife110.example.MyLifecycleBean"/>
</list>
</property>
</bean>
MyLifecycleBean自定义类
实现LifecycleBean 接口,通过LifecycleEventType 拿到4个生命周期事件
代码语言:javascript复制public class MyLifecycleBean implements LifecycleBean {
@IgniteInstanceResource
public Ignite ignite;
@Override
public void onLifecycleEvent(LifecycleEventType evt) {
if (evt == LifecycleEventType.BEFORE_NODE_START) {
System.out.format("Ignite节点的启动程序初始化之前调用;n");
} else if (evt == LifecycleEventType.AFTER_NODE_START) {
System.out.format("Ignite节点启动之后调用。n");
System.out.format("Ignite节点(consistentId = %s) 启动之后调用;n", ignite.cluster().node().consistentId());
} else if (evt == LifecycleEventType.BEFORE_NODE_STOP) {
System.out.format("Ignite节点的停止程序初始化之前调用。n");
} else if (evt == LifecycleEventType.AFTER_NODE_STOP) {
System.out.format("Ignite节点停止之后调用。n");
}
}
}
启动测试
代码语言:javascript复制 public static void main(String[] args) throws IgniteException {
Ignite ignite = Ignition.start("example-ignite.xml");
ignite.close();
}
结果日志如下:
代码语言:javascript复制Ignite节点的启动程序初始化之前调用;
[17:00:28] Configured plugins:
[17:00:28] ^-- None
[17:00:28]
[17:00:28] Configured failure handler: [hnd=StopNodeOrHaltFailureHandler [tryStop=false, timeout=0, super=AbstractFailureHandler [ignoredFailureTypes=UnmodifiableSet [SYSTEM_WORKER_BLOCKED, SYSTEM_CRITICAL_OPERATION_TIMEOUT]]]]
[17:00:28] Message queue limit is set to 0 which may lead to potential OOMEs when running cache operations in FULL_ASYNC or PRIMARY_SYNC modes due to message queues growth on sender and receiver sides.
[17:00:47] Security status [authentication=off, sandbox=off, tls/ssl=off]
[17:01:16] Data Regions Started: 4
[17:01:16] ^-- sysMemPlc region [type=internal, persistence=false, lazyAlloc=false,
[17:01:16] ... initCfg=40MB, maxCfg=100MB, usedRam=0MB, freeRam=100%, allocRam=40MB]
[17:01:16] ^-- default region [type=default, persistence=false, lazyAlloc=true,
[17:01:16] ... initCfg=256MB, maxCfg=3247MB, usedRam=0MB, freeRam=100%, allocRam=0MB]
[17:01:16] ^-- TxLog region [type=internal, persistence=false, lazyAlloc=false,
[17:01:16] ... initCfg=40MB, maxCfg=100MB, usedRam=0MB, freeRam=100%, allocRam=40MB]
[17:01:16] ^-- volatileDsMemPlc region [type=user, persistence=false, lazyAlloc=true,
[17:01:16] ... initCfg=40MB, maxCfg=100MB, usedRam=0MB, freeRam=100%, allocRam=0MB]
Ignite节点启动之后调用。
Ignite节点(consistentId = 0:0:0:0:0:0:0:1,10.1.3.201,127.0.0.1,192.168.137.1,192.168.139.1:47500) 启动之后调用;
[17:01:17] Performance suggestions for grid (fix if possible)
[17:01:17] To disable, set -DIGNITE_PERFORMANCE_SUGGESTIONS_DISABLED=true
[17:01:17] ^-- Enable G1 Garbage Collector (add '-XX: UseG1GC' to JVM options)
[17:01:17] ^-- Specify JVM heap max size (add '-Xmx<size>[g|G|m|M|k|K]' to JVM options)
[17:01:17] ^-- Set max direct memory size if getting 'OOME: Direct buffer memory' (add '-XX:MaxDirectMemorySize=<size>[g|G|m|M|k|K]' to JVM options)
[17:01:17] Refer to this page for more performance suggestions: https://apacheignite.readme.io/docs/jvm-and-system-tuning
[17:01:17]
[17:01:17] To start Console Management & Monitoring run ignitevisorcmd.{sh|bat}
[17:01:17]
[17:01:17] Ignite node started OK (id=f3e79055)
[17:01:17] Topology snapshot [ver=1, locNode=f3e79055, servers=1, clients=0, state=ACTIVE, CPUs=8, offheap=3.2GB, heap=3.5GB]
[17:01:17] ^-- Baseline [id=0, size=1, online=1, offline=0]
Ignite节点的停止程序初始化之前调用。
Ignite节点停止之后调用。
[17:01:17] Ignite node stopped OK [uptime=00:00:00.032]