itshaw89 / spring-boot-starter-elastic-job-lite

spring boot starter for Elastic-Job-Lite

Home Page:https://github.com/elasticjob/elastic-job-lite

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

spring-boot-starter-elastic-job-lite

spring boot starter for Elastic-Job

1、add pom

    <dependency>
    
        <groupId>cn.itshaw</groupId>
        
        <artifactId>spring-boot-starter-elastic-job-lite</artifactId>
        
        <version>${spring-boot-starter-elastic-job-lite.version}</version>
        
    </dependency>

2、regsiter center config

elaticjob:

  zookeeper:

    server-lists: ip1:2181,ip2:2181,ip3:2181

    namespace: elastic-job-lite-demo

    baseSleepTimeMilliseconds:      ##The initial value of the interval of time waiting for retrial (milliseconds)

    maxSleepTimeMilliseconds:       ##The maximum of the interval of time waiting for retrial (milliseconds)

    maxRetries:                     ##max retries
    
    sessionTimeoutMilliseconds:     ##Session timeout time  (milliseconds)
    
    connectionTimeoutMilliseconds:  ##Connection timeout time  (milliseconds)
    
    digest:                         ##Permission token to connect to Zookeeper. Default is not required to verify permission
    
  event:
  
    rdb:
    
      url: jdbc:mysql://ip:port/db_name
      
      username: username
      
      password: password
      
      driver-class-name: com.mysql.jdbc.Driver

3、cread job classes

SimpleJob Demo:

    @ElasticJobLite(cron="0 * * * * ?",shardingTotalCount = 3,shardingItemParameters = "0=Beijing,1=Shanghai,2=Guangzhou")
    @Component
    public class MySimpleJob implements SimpleJob {

        @Override
        public void execute(ShardingContext context) {

            switch (context.getShardingItem()) {
                case 0:
                    // do something by sharding item 0
                    break;

                case 1:
                    // do something by sharding item 1
                    break;

                case 2:
                    // do something by sharding item 2
                    break;
                // case n: ...
            }
        }
    }

DataflowJob Demo:

    @ElasticJobLite(cron="0 * * * * ?",shardingTotalCount = 3,shardingItemParameters = "0=Beijing,1=Shanghai,2=Guangzhou")
    @Component
    public class MyDataflowJob implements DataflowJob {

        @Override
        public List fetchData(ShardingContext shardingContext) {
            System.out.println(String.format("Item: %s | Time: %s | Thread: %s | %s",
                    shardingContext.getShardingItem(), new SimpleDateFormat("HH:mm:ss").format(new Date()), Thread.currentThread().getId(), "DATAFLOW FETCH"));
            return null;
        }

        @Override
        public void processData(ShardingContext shardingContext, List data) {
            System.out.println(String.format("Item: %s | Time: %s | Thread: %s | %s",
                    shardingContext.getShardingItem(), new SimpleDateFormat("HH:mm:ss").format(new Date()), Thread.currentThread().getId(), "DATAFLOW PROCESS"));

        }
    }

4、@ElasticJobLite config lists

value 作业启动时间的cron表达式(优先使用cron配置);

cron 作业启动时间的cron表达式;

shardingTotalCount 作业分片总数(默认为1);

shardingItemParameters 分片序列号和个性化参数对照表;

dataSource 作业数据源;

disabled 设置作业是否启动时禁止;

failover 是否开启失效转移,只有对monitorExecution的情况下才可以开启失效转移(默认为false);

monitorExecution 设置监控作业执行时状态(默认true); 每次作业执行时间和间隔时间均非常短的情况, 建议不监控作业运行时状态以提升效率, 因为是瞬时        状态, 所以无必要监控. 请用户自行增加数据堆积监控. 并且不能保证数据重复选取, 应在作业中实现幂等性. 也无法实现作业失效转移.
   每次作业执行时间和间隔时间均较长短的情况, 建议监控作业运行时状态, 可保证数据不会重复选取.

overwritedefault  设置本地配置是否可覆盖注册中心配置(默认为false);如果可覆盖, 每次启动作业都以本地配置为准.

jobName 作业名称(默认为任务的全类名);

streamingProcess 作业是否流式处理(只对Dataflowjob类型有效)(默认为true

maxTimeDiffSeconds   设置最大容忍的本机与注册中心的时间误差秒数(默认为-1);如果时间误差超过配置秒数则作业启动时将抛异常.配置为-1表示不检查时间     误差.

monitorPort 设置作业辅助监控端口(默认为-1);配置为-1表示不配置监控端口.

reconcileIntervalMinutes 设置修复作业服务器不一致状态服务执行间隔分钟数(默认为10分钟), 每隔一段时间监视作业服务器的状态,如果不正确则重新分片.

jobShardingStrategyClass 设置作业分片策略实现类全路径(默认为com.dangdang.ddframe.job.plugin.sharding.strategy.AverageAllocationJobShardingStrategy)

Ref:

http://www.infoq.com/cn/articles/dangdang-distributed-work-framework-elastic-job

https://github.com/elasticjob/elastic-job-lite

About

spring boot starter for Elastic-Job-Lite

https://github.com/elasticjob/elastic-job-lite


Languages

Language:Java 100.0%