调度服务
服务简码
HSDR
默认端口
8130
组件编码
hzero-scheduler
简介
1.1 概述
调度服务是基于Quartz 2.3.0
自研的分布式调度平台,服务端负责任务调度,任务的执行由执行器来完成。该服务具体包含执行器管理、并发任务管理、日志管理以及并发请求等。
1.2 组件坐标
- OP版本
<dependency>
<groupId>org.hzero</groupId>
<artifactId>hzero-scheduler</artifactId>
<version>${hzero.service.version}</version>
</dependency>
- SaaS版本
<dependency>
<groupId>org.hzero</groupId>
<artifactId>hzero-scheduler-saas</artifactId>
<version>${hzero.service.version}</version>
</dependency>
1.3 主要功能
- 执行器管理
- 调度任务管理
- 并发可执行
- 并发请求
1.4 服务配置参数
# 串行任务锁的自动释放时间,默认值300 ,单位秒
hzero.scheduler.lockTime
# 调度任务告警邮件的发送配置模板编码,默认值:HSDR.SCHEDULER_ALARM
hzero.scheduler.alarmEmail.messageCode
开发指导
2.1 quartz配置文件
quartz集群模式配置文件示例
#==============================================================
#Configure Main Scheduler Properties
#==============================================================
org.quartz.scheduler.instanceName = defaultScheduler
# 调度器编号自动生成,集群中编号不可以重复,所以最好设成auto
org.quartz.scheduler.instanceId = AUTO
#==============================================================
#Configure JobStore
#==============================================================
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.tablePrefix = QRTZ_
# 开启分布式部署
org.quartz.jobStore.isClustered = true
# 分布式节点有效性检查时间间隔,单位:毫秒
org.quartz.jobStore.clusterCheckinInterval = 10000
org.quartz.jobStore.maxMisfiresToHandleAtATime = 10
# 任务等待时间,单位:毫秒
org.quartz.jobStore.misfireThreshold = 30000
org.quartz.jobStore.txIsolationLevelSerializable = true
# 数据库支持for update操作的尽量使用 SELECT * FROM {0}LOCKS WHERE LOCK_NAME = ? FOR UPDATE
org.quartz.jobStore.selectWithLockSQL = SELECT * FROM {0}LOCKS WHERE LOCK_NAME = ?
#==============================================================
#Configure ThreadPool
#==============================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 30
org.quartz.threadPool.threadPriority = 5
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true
#==============================================================
#Skip Check Update
#update:true
#not update:false
#==============================================================
org.quartz.scheduler.skipUpdateCheck = true