简单介绍
参照文章 zeus源码剖析之事件处理机制
了解Hera也是使用着 观察者模式
进行对事件处理。
其中老鹰是 Event事件,母鸡是 不同任务类型的Listener, 小鸡是 Dispatcher.jobHandlers
简单说,母鸡和小鸡会跟着老鹰不同的动作,作出不同的相应
一、Event事件
有Job的失败事件、漏跑事件、成功事件,更新事件等
二、不同任务类型的Listener
HearAddJobListener
- 处理HeraJobMaintenanceEvent事件,往Dispatcher的 JobHandle集合里添加对应的jobHandle,并处理初始化事件
HeraJobFailListener
- 处理HeraJobFailedEvent事件,调用任务失败告警接口
三、Dispatcher.jobHandlers
主要函数是 handleEvent (处理执行成功事件、定时调度事件、更新任务事件、丢失重跑事件、初始化事件)
- 处理初始化事件 handleInitialEvent
- 先判断是否是之前正在运行的状态(重启时,可能是之前正在运行,但是关闭调度系统造成还没跑完)
- 如果是定时调度任务的话,创建quartz调度,在时间到的时候 添加进调度队列
- 处理执行成功事件 handleSuccessEvent
- 如果该执行成功的任务是本任务的依赖任务,更新本任务的状态(将本任务的对应依赖任务 更新成 已执行状态)
- 判断本任务的依赖任务 是否全执行成功
- 如果全执行成功,将本任务添加进调度队列
- 处理定时调度事件 handleTriggerEvent
- 处理更新任务事件 handleMaintenanceEvent
- 如果定时调度任务有更新操作,需要重新创建quartz调度
- 处理漏跑任务事件 handleLostEvent