• 调度服务


    服务简码 HSDR

    默认端口 8130

    默认路由 /hsdr/**

    组件编码 hzero-scheduler

    简介

    1.1 概述

    调度服务是基于Quartz 2.3.0自研的分布式调度平台,服务端负责任务调度,任务的执行由执行器来完成。该服务具体包含执行器管理、并发任务管理、日志管理以及并发请求等。

    1.2 组件坐标

    <dependency>
        <groupId>org.hzero</groupId>
        <artifactId>hzero-scheduler</artifactId>
        <version>${hzero.service.version}</version>
    </dependency>
    
    <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
    

    展望