Elastic-Job分布式定时任务使用说明

分布式定时任务依赖于Elastic-Job,官方文档:http://elasticjob.io/docs/elastic-job-lite/00-overview/

为了更简单的使用Elastic-Job分布式定时任务,我们对此框架进行了封装。

引入定时任务

<dependency>
    <groupId>com.wueasy</groupId>
    <artifactId>wueasy-task-elastic-job</artifactId>
    <version>最新版本</version>
</dependency>

开发一个简单的任务

开发任务请参考官方地址:http://elasticjob.io/docs/elastic-job-lite/01-start/dev-guide/

package com.wueasy.demo.task;

import java.util.Date;

import com.dangdang.ddframe.job.api.ShardingContext;
import com.dangdang.ddframe.job.api.simple.SimpleJob;
import com.wueasy.base.util.DateHelper;

/**
 *
 * @author: fallsea
 * @version 1.0
 */
public class DemoJob implements SimpleJob{

    @Override
    public void execute(ShardingContext shardingContext) {

        System.err.println("----------------------"+DateHelper.formatDate(new Date(),DateHelper.PATTERN_DATE_TIME));

    }

}

配置注册中心

分布式定时任务需要zookeeper注册中心支持,参考如下:

wueasy:
  #zookeeper注册中心地址
  zk :
    servers : 127.0.0.1:2181
    sessionTimeout : 3000
    connectionTimeout : 5000

配置任务

定时任务开发完成后,需要配置任务执行的规则。

wueasy:
  task: #定时任务
    elasticJob:
      job: #任务列表
        demoJob: #任务名称,唯一
          jobClass: com.wueasy.demo.task.DemoJob
          cron: "0/10 * * * * ?"
属性 必输 默认值 描述
jobType simple 任务类型 simple,dataflow,script
jobClass 作业实现类
cron cron表达式,用于控制作业触发时间
description 作业描述信息
shardingTotalCount 1 作业分片总数,默认1
shardingItemParameters 分片序列号和参数用等号分隔,多个键值对用逗号分隔;分片序列号从0开始,不可大于或等于作业分片总数。如:0=a,1=b,2=c
jobParameter 作业自定义参数;作业自定义参数,可通过传递该参数为作业调度的业务方法传参,用于实现带参数的作业;例:每次获取的数据量、作业实例从数据库读取的主键等
failover false 是否开启任务执行失效转移,开启表示如果作业在一次任务执行中途宕机,允许将该次未完成的任务在另一作业节点上补偿执行
misfire false 是否开启错过任务重新执行
monitorExecution true 监控作业运行时状态;每次作业执行时间和间隔时间均非常短的情况,建议不监控作业运行时状态以提升效率。因为是瞬时状态,所以无必要监控。请用户自行增加数据堆积监控。并且不能保证数据重复选取,应在作业中实现幂等性。;每次作业执行时间和间隔时间均较长的情况,建议监控作业运行时状态,可保证数据不会重复选取。
maxTimeDiffSeconds -1 最大允许的本机与注册中心的时间误差秒数;如果时间误差超过配置秒数则作业启动时将抛异常;配置为-1表示不校验时间误差
monitorPort -1 作业监控端口;建议配置作业监控端口, 方便开发者dump作业信息。使用方法: `echo "dump" nc 127.0.0.1 9888`
jobShardingStrategyClass 作业分片策略实现类全路径,默认使用平均分配策略 http://elasticjob.io/docs/elastic-job-lite/02-guide/job-sharding-strategy/
disabled false 作业是否禁止启动;可用于部署作业时,先禁止启动,部署结束后统一启动
overwrite false 本地配置是否可覆盖注册中心配置;如果可覆盖,每次启动作业都以本地配置为准
reconcileIntervalMinutes 10 修复作业服务器不一致状态服务调度间隔时间,配置为小于1的任意值表示不执行修复;单位:分钟
streamingProcess false 是否流式处理数据;如果流式处理数据, 则fetchData不返回空结果将持续执行作业;如果非流式处理数据, 则处理数据完成后作业结束
scriptCommandLine 脚本型作业执行命令行
eventTracking false 事件追踪是否启用

事件追踪

Elastic-Job提供了事件追踪功能,可通过事件订阅的方式处理调度过程的重要事件,用于查询、统计和监控。Elastic-Job目前提供了基于关系型数据库两种事件订阅方式记录事件。

引入数据库jar包

<dependency>
    <groupId>com.wueasy</groupId>
    <artifactId>wueasy-data-datasource</artifactId>
    <version>最新版本</version>
</dependency>
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.47</version>
</dependency>
  • 1.配置定时任务启用追踪功能wueasy.task.job.*.eventTracking = true,每个任务需要单独配置
  • 2.配置定时任务数据库,数据源必须是task
wueasy:
  task:
    elasticJob:
      job:
        demoJob:
          jobClass: com.wueasy.demo.task.DemoJob
          cron: "0/10 * * * * ?"
          eventTracking: true
  data:
    datasource :
      task : #定时任务数据源
        connection:
          url : jdbc:mysql://localhost:3306/easy_data?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=utf-8
          username : easyadmin
          password : easyadmin
          #连接池配置
          initialSize : 10  #初始化大小
          minIdle : 10  #最小连接
          maxActive : 20  #最大连接
          maxWait : 60000  #配置获取连接等待超时的时间
          timeBetweenEvictionRunsMillis : 2000  #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
          minEvictableIdleTimeMillis : 600000  #配置一个连接在池中最小生存的时间,单位是毫秒
          maxEvictableIdleTimeMillis : 600000  #配置一个连接在池中最大生存的时间,单位是毫秒
          validationQuery : SELECT 1 from dual
          testWhileIdle : true
          testOnBorrow : false
          testOnReturn : false
          keepAlive : true
Copyright © wueasy.com 2017-2020 all right reserved,powered by Gitbook未经允许,禁止以任何形式传播 修订时间: 2019-12-04

results matching ""

    No results matching ""