调度执行器
组件编码
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: XXX_EXECUTOR,XX_EXECUTOR
客户端的自动注册功能是默认开启的,可以通过配置来关闭
hzero:
  scheduler:
    auto-register: false
客户端向服务自动注册的IP和端口都是自动读取的,若IP读取的不对,可以手动指定注册的IP
hzero:
  scheduler:
    address: 192.168.XX.XXX
调度任务产生的日志,默认会上传到文件服务。若不使用文件服务存储日志文件,可以使用该配置关闭上传功能,日志会存储在日志表中,长度限制2000
hzero:
  scheduler:
    upload-log: 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对象,包含当前任务的一些属性、
 
- 任务日志文件形式记录
- 
获取用户信息 - 可以使用DetailsHelper获取任务创建人的租户ID、角色ID、用户ID,获取任务所属租户tool.getBelongTenantId()
 
- 可以使用
- 
关于任务停止 - 对任务的暂停``终止操作,会触发客户端的任务停止功能,默认情况下,调度任务停止时客户端正在执行的任务不会停止,会继续运行直到任务结束。
- 若需要使任务中途停止,可以使用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-02-15]
- 使用quartz替换xxl-job
版本 0.10.0.RELEASE [2019-06-23]
- 日志文件支持自定义格式或覆盖文件内容
- 调整任务暂停/停止处理逻辑
版本 1.0.0.RELEASE [2019-09-06]
- 执行器支持多编码
- 自动注册可手动指定IP
- 日志可不使用文件服务存储