作业监控(job)、任务调度、调度日志使用文档
# 特点
- 基于 Quartz 框架实现,界面化在线配置,任务调度信息,界面化配置Cron表达式。
- 支持在线配置调用表达式,可直接调用 Spring Bean 或 静态类 的方法,支持各种参数传递。
- 支持启用、停用、运行一次等功能操作。
- 支持调度日志查询,调度日志查询等。
- 支持集群情况自动调整,保证每个 job 不重复调用。
- 支持分布式下对每个微服务模块实例划分,保证各个微服务的 job 不冲突。
# 使用方法
# 开启配置参数
# 任务调度(个人版)
job:
enabled: true
# 是否自动启动任务调度(可关闭)
autoStartup: true
# 任务调度启动延迟设置(单位:秒)(建议设置项目启动完成后的时间)
startupDelay: 60
# 任务调度线程池
threadPool:
threadCount: 10
threadPriority: 5
2
3
4
5
6
7
8
9
10
11
12
13
14
# 调度配置界面
进入菜单:系统管理 -> 系统监控 -> 作业监控,可进入作业监控界面。
列表中展示已加入调度的任务列表,在列表中可以方便看到任务执行状态、上次运行和下次运行时间。
定时器:展示当前调度是否启用的状态,如果显示已停止,代表调度没有运行,点击列表右上角的 “启动定时器” 按钮即可启动。
从左上角可以点击 “调度日志” 按钮查看全局调度情况,在任务列表后点击 “调度日志” 可以看具体的任务调度情况。
在列表上可以操作任务和快速调试任务,如:启动、暂停、运行一次、编辑、删除等。
# 新增作业调度
- 任务名称:给任务起一个英文的名字
- 任务分组:给任务规划一个分组(任务名称和分组作为该任务的主键)
- 任务描述:描述调度任务的简要调度事件内容
- 调用字符串:调度执行的具体功能代码调用接口,具体下面单独列出一章讲解
- Cron 执行表达式:提供界面式的 Cron 表达式配置,降低门槛,勾勾选选即可完成。
- 计划错误策略:错过计划等待本次计划完成后立即执行一次;本次执行时间根据上次结束时间重新计算(时间间隔方式)
- 是否并发执行:如果是并发执行,当上次任务还未执行结束,下一次计划时间又到了,这时将会并发运行多个相同任务;如果选否,下次执行将被延迟;在复杂任务的时候建议选择 “否”
# 调用字符串
调用字符串支持三种调用方式,包括:Bean 调用、静态类调用、Groovy脚本
1、Bean调用:
书写:Bean名.方法名(参数1, 参数2, 参数n...) 参数说明:支持Bean名参数、数值类型参数、字符串参数(字符串参数需要加单引号,参数中包含逗号的使用 , 字符转码)
Bean名为 Spring 注册到 Spring 工程里的名字,如 @Service("bean名")
如果不写,默认为 注册类的小驼峰写法
如:class TestDataService {} ,则 Bean 名为:testDataService
示例:testDataService.executeTestTask(userService, 1, 2L, 3F, 4D, 'abc')
Bean名也可以写 Spring 注册到 Spring 工程里的类名, 如:com.jeesite.modules.test.service.TestDataService.executeTestTask(userService, 1, 2L, 3F, 4D, 'abc')
2、静态类调用:
书写格式:静态类全名.方法名(参数1, 参数2, 参数n...) 参数说明:支持Bean名参数、数值类型参数、字符串参数(字符串参数需要加单引号,参数中包含逗号的使用 , 字符转码)
示例: com.jeesite.common.config.Global.getConfig('productName')
3、Groovy脚本:
该功能依赖 BPM 的脚本管理界面,您配置好的脚本,可以直接通过作业调用去执行它。
调用方式:bpmScriptService.runScript("脚本id")
脚本id为:js_bpm_script 表的 id 字段
# 调度日志
调度日志,默认只记录错误的日志,若想记录其它日志,可参考如下配置开启即可
# 任务调度(个人版)
job:
# 调度日志配置
log:
# 计划调度日志
scheduler:
enabled: true
# 是否只保存错误日志
errorLevel: false
# 任务执行日志
jobDetail:
enabled: true
# 是否只保存错误日志
errorLevel: false
# 计划触发日志
trigger:
enabled: true
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 集群环境
调度核心使用 Quartz 框架,该框架自动适应集群环境下相同实例的调度,打开如下配置:
# 任务调度(专业版)
job:
# 任务调度集群设置
jobStore:
isClustered: true
dataSourceName: job
clusterCheckinInterval: 1000
# 这里也可以更改 job 数据的存储方式
#className: org.quartz.impl.jdbcjobstore.JobStoreTX
#className: org.quartz.impl.jdbcjobstore.JobStoreCMT
2
3
4
5
6
7
8
9
10
11
若调度任务比较占用数据源资源,这里可以单独制定调度使用的数据库源名称。
# Cloud 环境
支持 JeeSite Cloud 下,若每个微服务使用不同的作业调度管理,打开如下配置:
# 任务调度(专业版)
job:
# 调度设置,集群中每一个实例都必须使用相同的instanceName名称 (区分特定的调度器实例)
# 在微服务模式情况下,请将instanceName名称设置为当前微服务的名称
# 每一个instanceId必须不同,设置AUTO则自动生成
scheduler:
instanceName: ${spring.application.name}
instanceId: AUTO
2
3
4
5
6
7
8
9
微服务调度页面的访问地址为: http://host:port/${contextPath}/${adminPath}/${spring.application.name}/job/list
该页面展示当前微服务的任务列表,微服务之间数据分离互不影响。