Elastic-Job是一个分布式的定时任务框架 基于成熟的定时任务作业框架Quartz cron表达式执行定时任务 相对于Quartz它增加了任务分片。这样能有效的防止单节点部署项目带来的种种不便
入门案例 本案例基于Springmvc 和 maven 如果你在本地测试需要首先自己安装好zookeeper因为注册中心是zookeeper 采用测试用例测试的时候 需要两台不同ip的机器去启动job 因为ElasticJob默认的分片机制是根据ip来分片的 如果ip相同 它会默认为一台服务器 首先 在maven项目的pom.xml文件中增加Elastic-Job的相关依赖的jar包代码如下
<dependency> <groupId>com.dangdang</groupId> <artifactId>elastic-job-core</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>com.dangdang</groupId> <artifactId>elastic-job-spring</artifactId> <version>1.1.1</version> </dependency>然后 构建好相关的job类 这里我是采用的SimpleJob类型的 所以实现的是SimpleJob接口
public class MyElasticJob extends AbstractSimpleElasticJob { @Override public void process(JobExecutionMultipleShardingContext arg0) { // TODO Auto-generated method stub SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("date : " + sdf.format(new Date()) + " , 第" + arg0.getShardingItems() + "个分片 " + arg0.getJobParameter() + " +"); } } public class TestElastic { public static void main(String[] args) { ApplicationContext context1 = new ClassPathXmlApplicationContext("hun-test/app.xml"); } }然后 配置好job.xml,你也可以配置到Spring的application.xml文件中为了配置文件的相对干净我配置到job.xml中
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:reg="http://www.dangdang.com/schema/ddframe/reg" xmlns:job="http://www.dangdang.com/schema/ddframe/job" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.dangdang.com/schema/ddframe/reg http://www.dangdang.com/schema/ddframe/reg/reg.xsd http://www.dangdang.com/schema/ddframe/job http://www.dangdang.com/schema/ddframe/job/job.xsd "> <!--配置作业注册中心 --> <reg:zookeeper id="regCenter" server-lists="192.168.40.201:2181" namespace="dd-job" base-sleep-time-milliseconds="1000" max-sleep-time-milliseconds="3000" max-retries="3" /> <!-- 配置作业--> <job:simple id="oneOffElasticJob" class="job.MyElasticJob" registry-center-ref="regCenter" cron="0/5 * * * * ?" sharding-total-count="2" sharding-item-parameters="0=0,1=1" overwrite="true" /> </beans>最后 将job.xml引入到Spring的配置文件中(通常是application.xml 也可能是你自己起的其他名字) 注意两个配置文件的路径
<import resource="job.xml"/>