JeeSite 快速开发平台
官方网站
    • 平台简介
    • 架构特点
    • 技术选型
    • 功能介绍
    • 安装部署
    • 常见问题
    • 目录结构
    • 更新日志
    • Vue 文档
    • BPM 文档
    • Cloud 文档
V5 演示
Vue 演示
💖联系
  • 我要提意见、文档纠错
  • JeeSite 代码库, 请⭐Star关注
  • JeeSite Vue 代码库, 请⭐关注
  • Spring Cloud 微服务架构
  • JeeSite 手机端/移动端
  • AI + RAG + CMS 人工智能
  • Flowable 中国式工作流
  • OAauth2 统一认证服务器
  • 政务内外网环境中间件
  • 访问 ThinkGem 官方博客
  • 点击进入,下拉查看动态
官方网站
    • 平台简介
    • 架构特点
    • 技术选型
    • 功能介绍
    • 安装部署
    • 常见问题
    • 目录结构
    • 更新日志
    • Vue 文档
    • BPM 文档
    • Cloud 文档
V5 演示
Vue 演示
💖联系
  • 我要提意见、文档纠错
  • JeeSite 代码库, 请⭐Star关注
  • JeeSite Vue 代码库, 请⭐关注
  • Spring Cloud 微服务架构
  • JeeSite 手机端/移动端
  • AI + RAG + CMS 人工智能
  • Flowable 中国式工作流
  • OAauth2 统一认证服务器
  • 政务内外网环境中间件
  • 访问 ThinkGem 官方博客
  • 点击进入,下拉查看动态
  • 快速了解

  • 后端开发手册

  • Vue前端手册

  • 经典前端手册

  • 扩展功能专题

    • BPM 业务流程系统
    • 用户类型、类型扩展
    • 消息推送、消息提醒
    • 单点登录、OAuth2
    • 作业监控、任务调度
      • 特点
      • 使用方法
        • 开启配置参数
        • 调度配置界面
        • 新增作业调度
        • 调用字符串
      • 调度日志
      • 集群环境
      • Cloud 环境
      • 常见问题
    • 对象存储、文件存储
    • 可视化数据大屏
    • 在线报表设计器
    • 文件管理、文件柜
    • 在线预览图片文档
    • 手机端移动端、Uni-App
    • CMS 内容管理系统
    • AI 知识库智能助手
    • 涉密 “三员” 管理
    • OAauth2 统一认证服务
  • 云服务技术架构

  • 技术支持与服务

作业监控(job)、任务调度、调度日志使用文档

# 特点

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

# 使用方法

# 开启配置参数

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

  # 任务调度启动延迟设置(单位:秒)(建议设置项目启动完成后的时间)
  startupDelay: 60
  
  # 任务调度线程池
  threadPool:
    threadCount: 10
    threadPriority: 5
1
2
3
4
5
6
7
8
9
10
11
12
13
14

注意:环境名称,不可设置为 test 它是单元测试专用的名称,否则会造成 Job 无法启动

spring.profiles.active: default
1

# 调度配置界面

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

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

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

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

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

# 新增作业调度

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

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

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

# 常见问题

  • 提示 NoSuchMethodException 方法不存在,如果确认方法确实存在,却抛出了这个错误,一般是以下几个原因:
    • 作业调度默认是开启集群模式的,如果一个数据库,被多个 Web 共用的时候,会随机选择一个 Web 来执行作业。
    • 如果共用一个库 Web 的源码不同,且没有作业调度里指定的方法,当被选择执行作业时,就可能会抛出此异常。
    • 微服务环境,可对每个微服务指定不同的 instanceName 用来区分微服务独立性。
进入 JeeSite 源码仓库页面,点击右上角 ⭐ Star 加星关注。

← 单点登录、OAuth2 对象存储、文件存储→

联系我们:s.jeesite.com  |  微信号:jeesitex  |  邮箱:jeesite@163.com
© 2013-2025 济南卓源软件有限公司 版权所有 | Theme Vdoing

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

  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式