elasticjob mysql_Elastic Job入门(1) - 简介

com.zaxxer

HikariCP

spring:

datasource:

url: jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&verifyServerCertificate=false&useSSL=false&requireSSL=false

driver-class-name: com.mysql.jdbc.Driver

username: root

password: root

type: com.zaxxer.hikari.HikariDataSource

# 自动创建更新验证数据库结构

jpa:

hibernate:

ddl-auto: update

show-sql: truedatabase: mysql

==========================================API配置启动==========================================

引入Maven

com.dangdang

elastic-job-lite-core

${latest.release.version}

方法参数ShardingContext包含作业配置,分片和运行时信息。可通过getShardingTotalCount(),getShardingItems()等方法分别获取分片总数,运行在本作业服务器的分片序列号集合等。

Simple类型作业

与Quartz接口相似,用于执行普通的定时任务,只是增加了弹性拓容和分片等功能:

public class MyElasticJob implementsSimpleJob {

@Overridepublic voidexecute(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: ...

}

}

}

Dataflow类型作业

Dataflow类型用于处理数据流,需实现DataflowJob接口。该接口提供2个方法可供覆盖,分别用于抓取(fetchData)和处理(processData)数据。

public class MyElasticJob implements DataflowJob{

@Overridepublic ListfetchData(ShardingContext context) {switch(context.getShardingItem()) {case 0:

List data = //get data from database by sharding item 0

returndata;case 1:

List data = //get data from database by sharding item 1

returndata;case 2:

List data = //get data from database by sharding item 2

returndata;//case n: ...

}

}

@Overridepublic void processData(ShardingContext shardingContext, Listdata) {//process data//...

}

}

流式处理

可通过DataflowJobConfiguration配置是否流式处理。流式处理数据只有fetchData方法的返回值为null或集合长度为空时,作业才停止抓取,否则作业将一直运行下去; 非流式处理数据则只会在每次作业执行过程中执行一次fetchData方法和processData方法,随即完成本次作业。如果采用流式作业处理方式,建议processData处理数据后更新其状态,避免fetchData再次抓取到,从而使得作业永不停止。 流式数据处理参照TbSchedule设计,适用于不间歇的数据处理。

作业配置

Elastic-Job配置分为3个层级,分别是Core, Type和Root。每个层级使用相似于装饰者模式的方式装配。

Core对应JobCoreConfiguration,用于提供作业核心配置信息,如:作业名称、分片总数、CRON表达式等。

Type对应JobTypeConfiguration,有3个子类分别对应SIMPLE, DATAFLOW和SCRIPT类型作业,提供3种作业需要的不同配置,如:DATAFLOW类型是否流式处理或SCRIPT类型的命令行等。

Root对应JobRootConfiguration,有2个子类分别对应Lite和Cloud部署类型,提供不同部署类型所需的配置,如:Lite类型的是否需要覆盖本地配置或Cloud占用CPU或Memory数量等。

//定义作业核心配置

JobCoreConfiguration simpleCoreConfig = JobCoreConfiguration.newBuilder("demoSimpleJob", "0/15 * * * * ?", 10).build();//定义SIMPLE类型配置

SimpleJobConfiguration simpleJobConfig = new SimpleJobConfiguration(simpleCoreConfig, SimpleDemoJob.class.getCanonicalName());//定义Lite作业根配置

LiteJobConfiguration simpleJobRootConfig = LiteJobConfiguration.newBuilder(simpleJobConfig).build();

作业启动

public classJobDemo {public static voidmain(String[] args) {newJobScheduler(createRegistryCenter(), createJobConfiguration()).init();

}private staticCoordinatorRegistryCenter createRegistryCenter() {

CoordinatorRegistryCenter regCenter= new ZookeeperRegistryCenter(new ZookeeperConfiguration("zk_host:2181", "elastic-job-demo"));

regCenter.init();returnregCenter;

}private staticLiteJobConfiguration createJobConfiguration() {//创建作业配置//...

}

}

==========================================Spring配置启动==========================================

引入Maven

com.dangdang

elastic-job-lite-spring

${latest.release.version}

作业配置

作业启动

将配置Spring命名空间的xml通过Spring启动,作业将自动加载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值