JeeSite 4.x

Spring Boot 最好的快速开发平台

作业监控(job)、作业调度、调度日志

特点

  • 基于 Quartz 框架实现,界面化在线配置,任务调度信息,界面化配置Cron表达式。
  • 支持在线配置调用表达式,可直接调用 Spring Bean 或 静态类 的方法,支持各种参数传递。
  • 支持启用、停用、运行一次等功能操作。
  • 支持调度日志查询,调度日志查询等。
  • 支持集群情况自动调整,保证每个 job 不重复调用。
  • 支持分布式下对每个微服务模块实例划分,保证各个微服务的 job 不冲突。

使用方法

开启配置参数

# 任务调度(个人版)
job:
  enabled: true
  
  # 是否自动启动任务调度(可关闭)
  autoStartup: true

  # 任务调度启动延迟设置(单位:秒)(建议设置项目启动完成后的时间)
  startupDelay: 60
  
  # 任务调度线程池
  threadPool:
    threadCount: 10
    threadPriority: 5

调度配置界面

进入菜单:系统管理 -> 系统监控 -> 作业监控,可进入作业监控界面。

列表中展示已加入调度的任务列表,在列表中可以方便看到任务执行状态、上次运行和下次运行时间。

定时器:展示当前调度是否启用的状态,如果显示已停止,代表调度没有运行,点击列表右上角的 “启动定时器” 按钮即可启动。

从左上角可以点击 “调度日志” 按钮查看全局调度情况,在任务列表后点击 “调度日志” 可以看具体的任务调度情况。

在列表上可以操作任务和快速调试任务,如:启动、暂停、运行一次、编辑、删除等。

新增作业调度

  • 任务名称:给任务起一个英文的名字
  • 任务分组:给任务规划一个分组(任务名称和分组作为该任务的主键)
  • 任务描述:描述调度任务的简要调度事件内容
  • 调用字符串:调度执行的具体功能代码调用接口,具体下面单独列出一章讲解
  • 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

集群环境

调度核心使用 Quartz 框架,该框架自动适应集群环境下相同实例的调度,打开如下配置:

# 任务调度(专业版)
job:

  # 任务调度集群设置
  jobStore:
    isClustered: true
    dataSourceName: job
    clusterCheckinInterval: 1000
    # 这里也可以更改 job 数据的存储方式
    #className: org.quartz.impl.jdbcjobstore.JobStoreTX
    #className: org.quartz.impl.jdbcjobstore.JobStoreCMT

若调度任务比较占用数据源资源,这里可以单独制定调度使用的数据库源名称。

Cloud 环境

支持 JeeSite Cloud 下,若每个微服务使用不同的作业调度管理,打开如下配置:

# 任务调度(专业版)
job:

  # 调度设置,集群中每一个实例都必须使用相同的instanceName名称 (区分特定的调度器实例)
  # 在微服务模式情况下,请将instanceName名称设置为当前微服务的名称
  # 每一个instanceId必须不同,设置AUTO则自动生成
  scheduler:
    instanceName: ${spring.application.name}
    instanceId: AUTO

微服务调度页面的访问地址为: http://host:port/${contextPath}/${adminPath}/${spring.application.name}/job/list

该页面展示当前微服务的任务列表,微服务之间数据分离互不影响。


阿里云【爆款特惠】精选爆款产品低至0.95折

关注 JeeSite 公众号,了解最新动态