springboot2.x+Elastic-job定时任务

  Elastic-job,是当当开源的一款定时任务框架,有很多的公司在用,在稳定性上面还是有很大的保证的.简单介绍一下它,当当定时任务是一个去中心化的分布式的服务,仅仅依赖的只有zookeeper,它可以灵活的对我们的任务进行分片,在我之前的工作当中,集群的环境下,有的任务需要几台服务器同时执行,也有的任务只需要一台服务器执行,Elastic-job都可以完美的支持,更重要的一点是,基本上定时任务的所有配置都有图形化的配置界面.
  给一个它的官方网址 http://elasticjob.io/index_zh.html ,有兴趣的朋友可以去详细了解一下.话不多说我们下面进入正题.
  我这里使用的编辑器是idea,首先我们去新建一个工程,如下图在这里插入图片描述
一直next到最后就好了,我这里为了方便,还在配置页面选择了一个web的依赖在这里插入图片描述
打开我们新建的工程,编辑我们的pom文件,添加我们的Elastic-job的依赖,如下图springboot2.x+Elastic-job定时任务_第1张图片
图中的依赖代码在这


            com.dangdang
            elastic-job-lite-spring
            2.1.5

  接下来我们新建一个测试的定时任务类,TestJob,实现SimpleJob,并交给spring容器管理就ok了,完整代码如下:

package com.example.demo;

import com.dangdang.ddframe.job.api.ShardingContext;
import com.dangdang.ddframe.job.api.simple.SimpleJob;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

/**
 * 这是我们的测试job类
 * @author
 * @date 2018/10/25.
 */
@Component
public class TestJob implements SimpleJob {

    Logger logger = LoggerFactory.getLogger(TestJob.class);
    
    @Override
    public void execute(ShardingContext shardingContext) {
          logger.info("我是一个定时任务");
    }
}

  然后在我们的resources下面新建一个jobs.xml文件,文件内容如下


<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="127.0.0.1:2181" namespace="test" base-sleep-time-milliseconds="1000"
                   max-sleep-time-milliseconds="3000" max-retries="3" />

    
    <job:simple id="testJob" class="com.example.demo.TestJob"
                registry-center-ref="regCenter" cron="0 * * * * ?"
                sharding-item-parameters="0=A,1=B,2=C" description="这个一个定时任务" sharding-total-count="3"/>

beans>

  写到这里我们发现我们少了一个zookeeper,这里就不详细描述如何安装zookeeper了,提供2个博客给大家:
  Windows版:https://www.cnblogs.com/shanyou/p/3221990.html
  Linux版:https://www.cnblogs.com/zengxiaoliang/p/8442815.html
  把上面jobs.xml文件中的server-lists中的ip替换成自己的就好了,这里在简单介绍一下我们配置文件中的cron表达式的意思是每分钟执行一次,这里也不详细介绍了.此时我们的目录结构是这样的springboot2.x+Elastic-job定时任务_第2张图片
  下面就是我们在启动项目前的最后一步了,打开我们的启动类,也就是我们上面截图的DemoApplication,把我们的配置文件注入进去,代码如下:

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;

@SpringBootApplication
@ImportResource(locations={"classpath:jobs.xml"})
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

  下面我们点击运行,看一下效果吧!等待一分钟后我们会看到我们的控制台输出了我们上面再TestJob中打印的语句,截图如下:springboot2.x+Elastic-job定时任务_第3张图片
  到这里就说明我们的定时任务正常启动了.
  最后我们在说一下我们上文提到的图形化的配置界面.我们需要下载Elastic-job的源码,然后使用maven命令进行编译,就可以得到了,这里我提供一个已经下载好的,只需要解压,windows用户点击bin目录下的start.bat,mac或者linux用户执行start.sh脚本就可以了
  链接:https://pan.baidu.com/s/1IhuL9JwDUvRTCtIbyW6uTg 密码:pany
  浏览器上输入127.0.0.1:8899,输入用户名root,密码root,进入界面,添加我们的注册中心也就是zookeeper地址,就ok了!
springboot2.x+Elastic-job定时任务_第4张图片
  剩下的界面上的功能就由大家自己去解锁了!!!

你可能感兴趣的:(springboot2.x+Elastic-job定时任务)