调度执行器
组件编码
hzero-boot-scheduler
一、简介
1.1 概述
调度服务客户端,配合调度服务使用,主要负责调度任务的具体执行,包括任务定义、日志回写、自动注册等功能。
1.2 组件坐标
<dependency>
<groupId>org.hzero.boot</groupId>
<artifactId>hzero-boot-scheduler</artifactId>
<version>${hzero.boot.version}</version>
</dependency>
1.3 功能特性
- 执行器自动注册
- 任务生命周期监听
- 任务进度控制
- 任务日志文件形式存储
二、使用说明
2.1 配置说明
服务需要注册为执行器,pom中添加依赖该客户端,添加yml文件配置声明执行器编码
**注意:**执行器编码只能使用大写字母、数字、中划线、下划线、点
hzero:
scheduler:
executor-code: HSDR_EXECUTOR
客户端的自动注册功能是默认开启的,可以通过配置来关闭
hzero:
scheduler:
auto-register: false
2.2 任务的具体实现
- 简单类型任务。
任务定义需要实现org.hzero.boot.scheduler.infra.handler.IJobHandler
接口,重写execute
方法。同时类需要添加注解声明jobHandler。
/**
* 示例任务
*/
@JobHandler("demo")
public class DemoJob implements IJobHandler {
@Override
public ReturnT execute(Map<String, String> map, SchedulerTool tool) {
// 刷新任务进度及描述
tool.updateProgress(50, "任务执行中...");
// 任务日志记录
tool.info("示例任务执行成功!");
return ReturnT.SUCCESS;
}
}
execute
方法的两个参数,map是任务创建时传递来的json格式的参数。tool中提供了任务的一些操作方法,下面会详细说明。
三、定制化开发
org.hzero.boot.scheduler.infra.handler.IJobHandler
提供的生命周期监控,没有需求可以不重写onCreate
方法在任务开始前执行onException
方法在任务执行捕获到异常时执行onFinish
方法在任务执行结束后执行
SchedulerTool
提供的功能-
任务日志文件形式记录
tool提供了
debug``info``warn``error
四个方法用来记录日志,日志最终会通过文件服务保存。文件的默认后缀名为“.txt”。可以通过SchedulerTool
的setFileSuffix
方法自行覆盖。也可以使用setByteArrayOutputStream
方法自行覆盖日志文件内容。 -
任务进度更新
tool提供了
updateProgress
方法更新当前任务进度以及任务进度描述,调度日志页面可以实时查看任务进度。任务进度允许0-100 -
添加子任务
tool提供了
addChildJob
方法用于动态创建子任务。 -
获取当前任务的相关信息
tool提供了
getJobDataDTO
方法,获取JobDataDTO
对象,包含当前任务的一些属性
-
- 用户信息获取
- 在任务创建与更新时,调度服务会将任务创建人或最后修改人的jwt_token存储下来。任务执行时,执行器会自动解析jwt_token,
DetailsHelper
可以获取到对应的用户信息。
- 在任务创建与更新时,调度服务会将任务创建人或最后修改人的jwt_token存储下来。任务执行时,执行器会自动解析jwt_token,
- 关于任务停止
- 对任务的
暂停``终止
操作,会触发客户端的任务停止功能,默认情况下,调度任务停止时客户端正在执行的任务不会停止,会继续运行直到任务结束。 - 若需要使任务中途停止,可以使用
org.hzero.boot.scheduler.infra.handler.IJobHandlerAllowStop
替换org.hzero.boot.scheduler.infra.handler.IJobHandler
。IJobHandlerAllowStop
提供了onStop
方法,allowStop
用于标识任务的是否可以停止。前端点击终止
,allowStop
返回值为true,会执行onStop
方法做为任务停止后的补偿执行方法。IJobHandlerAllowStop
提供了onPause
方法,allowStop
用于标识任务的是否可以停止。前端点击暂停
,allowStop
返回值为true,会执行onPause
方法做为任务暂停后的补偿执行方法。
- 对任务的
四、版本更新日志
版本 0.8.0.RELEASE [2019-2-15]
- 使用quartz替换xxl-job
版本 0.10.0.RELEASE [2019-6-23]
- 日志文件支持自定义格式或覆盖文件内容
- 调整任务暂停/停止处理逻辑
展望
- 任务类型拓展
- 子任务拓展