Elastic Job 定时任务实现

原创 2017年09月14日 09:10:54

官方文档:http://dangdangdotcom.github.io/elastic-job/elastic-job-lite/00-overview/intro/

该说的文档上都说了;在过程中遇到一些错误记下了


环境:zookeeper版本 zookeeper-3.4.6 或3.4.6以上 不然会莫名其妙的报错

我是maven 搭建的项目 需要包(当然spring的包是不可少的当然你用java来操作的话就不需要spring的包了):

	    <dependency>
               <artifactId>elastic-job-common-core</artifactId>
               <groupId>com.dangdang</groupId>
               <version>2.1.5</version>
         </dependency>
           
        <dependency>
            <artifactId>elastic-job-lite-core</artifactId>
            <groupId>com.dangdang</groupId>
            <version>2.1.5</version>
        </dependency>
        
        <dependency>
            <artifactId>elastic-job-lite-spring</artifactId>
            <groupId>com.dangdang</groupId>
            <version>2.1.5</version>
        </dependency> 

spring-job配置(参数配置就不讲了官方文档都有配置;关键点是配置是配置的数据源作业维度操作历史记录看你自己了需要配你就配不需要就不配 event-trace-rdb-data-source="dataSource"):

<?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:context="http://www.springframework.org/schema/context" 
    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.springframework.org/schema/context 
                        http://www.springframework.org/schema/context/spring-context.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="localhost:2181" namespace="erp-job" base-sleep-time-milliseconds="1000" max-sleep-time-milliseconds="3000" max-retries="3" />
    <!-- 0 0 0 * * ? -->
    <job:simple id="customerFollowElasticJob" class="com.isz.erp.job.CustomerFollowElasticJob" registry-center-ref="regCenter" cron="0 0 0 * * ?" 
    	sharding-total-count="2"    description="这里是描述" event-trace-rdb-data-source="dataSource"/>
    <!-- 配置作业-->
</beans>

java代码实现:

package com.isz.erp.job;

import org.springframework.beans.factory.annotation.Autowired;

import com.dangdang.ddframe.job.api.ShardingContext;
import com.dangdang.ddframe.job.api.simple.SimpleJob;


/**
 * @Description: 
 * @date: 2017年9月8日 下午5:53:56
 */
public class CustomerFollowElasticJob  implements SimpleJob{

	
	
	@Override
	public void execute(ShardingContext context) {
	 
		
		testShareData(context.getShardingItem(), context.getShardingTotalCount(), 100, context.getTaskId());
	}
	
	
	/**
	* @Description: 测试分片数据 参数一当前分片 参数二分片总数 参数三 总条数
	* @return void 
	* @date 2017年9月7日 下午5:24:41
	 */
	public void testShareData(int sharItem,int sharCount,int dataCount,String taskId ){
		
		if(sharItem==(sharCount-1)){//如果总分片数据==当前分片 说明是最后数据
			System.out.println("分片...."+taskId+"......."+sharItem+"执行数据:"+((dataCount/sharCount)*sharItem)+"到"+((dataCount/sharCount)*(sharItem==0?1:sharItem+1)+(dataCount%sharCount)));	
		}else{
			System.out.println("分片...."+taskId+"........"+sharItem+"执行数据:"+((dataCount/sharCount)*sharItem)+"到"+(dataCount/sharCount)*(sharItem==0?1:sharItem+1));
		}
	}
	
	public static void main(String[] args) {
		
		//97条数据
		int dataCount=97;
		
		//5片
		int share=5;
		
		System.out.println("每个分片执行:"+97/5+"条数数据");
		
		System.out.println("最后一个分片执行:"+((97/5)+(dataCount%share))+"条数数据");
		
	}

}
启动服务:

package test.dubbo;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * 
 * @描述: 启动Dubbo服务用的MainClass.
 * @作者:
 * @创建时间:
 * @版本: 1.0
 */
public class DubboProvider {

	private static final Log log = LogFactory.getLog(DubboProvider.class);

	@SuppressWarnings("resource")
	public static void main(String[] args) {
		try {

			
			ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
					"classpath:spring/spring-context.xml");
			context.start();
		} catch (Exception e) {
			log.error("== DubboProvider context start error:", e);
		}
		synchronized (DubboProvider.class) {
			while (true) {
				try {
					DubboProvider.class.wait();
				} catch (InterruptedException e) {
					log.error("== synchronized error:", e);
				}
			}
		}
	}

}


启动服务后你应该就可以看到控制太打印的信息了..........................到此程序就玩了

可能要用到的工具:

官网上下载:elastic-job-lite-console-2.1.5 可以看到以下信息(相关参数官网上都有介绍相信你也看的懂是什么)

目录里bin下面有个start.bat如果是linux启动start.sh就好了 然后在浏览器上输入:http://localhost:8899/ 你就会看到如下信息



还可以下载:ZooInspector 看一下节点信息:




就这样完了。。。。。。。。。。。。。。。

版权声明:本文为博主原创文章,未经博主允许不得转载。

elastic-job的原理简介和使用

elastic-job是当当开源的一款非常好用的作业框架,在这之前,我们开发定时任务一般都是使用quartz或者spring-task(ScheduledExecutorService),无论是使用q...
  • fanfan_v5
  • fanfan_v5
  • 2017年03月11日 02:14
  • 9939

Elastic Job 入门详解

Elastic job是当当网架构师张亮,曹昊和江树建基于Zookepper、Quartz开发并开源的一个Java分布式定时任务,解决了Quartz不支持分布式的弊端。Elastic job主要的功能...
  • zhglance
  • zhglance
  • 2017年02月15日 18:16
  • 13438

elastic job (一) elastic-job-lite----SimpleJob

elastic-job分为elastic-job-lite 和elastic-job-cloud两部分,笔者最近打算再深度学习一下elastic-job,看了下版本升级到2.1.5了,我们就按照这个版...
  • u013018994
  • u013018994
  • 2017年07月27日 17:39
  • 2041

Elastic-Job开发指南

原文地址:http://dangdangdotcom.github.io/elastic-job/post/1.x/user_guide/ 开发指南 代码开发 作业类型 目前提供3种作业类型...
  • tanga842428
  • tanga842428
  • 2016年10月22日 09:33
  • 11355

elasticjob遇到问题总结

上文介绍了elasticJob具体是干什么的?这里在实际操作中出现的问题进行说明: 公司需要做一个对别的公司推送过来的订单,进行有效校验,所以需要定时任务。项目中完全使用 通过spring...
  • u014206695
  • u014206695
  • 2017年09月05日 16:44
  • 706

Elastic-Job开发指南

开发指南 代码开发 作业类型 目前提供3种作业类型,分别是Simple, DataFlow和Script。 DataFlow类型用于处理数据流,它又提供2种作业类型,分别是Th...
  • qinxuefly
  • qinxuefly
  • 2016年11月10日 09:42
  • 6568

Elastic-JOB

开发指南 代码开发 作业类型 目前提供3种作业类型,分别是Simple, DataFlow和Script。 DataFlow类型用于处理数据流,它又提供2种作业类型,分别是Th...
  • zhaosensenyy
  • zhaosensenyy
  • 2016年07月08日 21:43
  • 5823

elastic-job 构建

elastic-job 构建官方文档:http://dangdangdotcom.github.io/elastic-job/简介:Elastic-Job是一个分布式调度解决方案,由两个相互独立的子项...
  • zhengyong15984285623
  • zhengyong15984285623
  • 2016年08月28日 15:20
  • 6140

quartz系列(四):elastic-job的实践

在造完轮子之后,回到开源,本文主要记录对当当网的elastic-job进行试用的过程。简要介绍:elastic-job 是基于成熟的开源产品Quartz和Zookeeper及其客户端Curator进行...
  • ahmuAMu
  • ahmuAMu
  • 2016年03月14日 03:48
  • 14547

elastic job原理解析

一、elastic job 2.1.5 较之前的版本改动了在zookeeper上的信息,zk上的存储和相关说明如下图: 二、elasticjob的基本概念 1、每个作业进程都对应一个JobIns...
  • jiequandao12
  • jiequandao12
  • 2017年07月20日 19:22
  • 396
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Elastic Job 定时任务实现
举报原因:
原因补充:

(最多只允许输入30个字)