源码在码云上(git@gitee.com:lynch168/spring-boot.git)

1、下载xxl-job源码

xxl-job源码地址:https://github.com/xuxueli/xxl-job

解压导入到Eclipse,如下图所示:

2、修改pom.xml文件
2.1、修改/xxl-job-2.0.2/pom.xml

  1. <plugin>
  2. <groupId>org.apache.maven.plugins</groupId>
  3. <artifactId>maven-source-plugin</artifactId>
  4. <version>${maven-source-plugin.version}</version>
  5. <configuration>
  6. <source>1.8</source>
  7. <target>1.8</target>
  8. </configuration>
  9. <executions>
  10. <execution>
  11. <phase>package</phase>
  12. <goals>
  13. <goal>jar-no-fork</goal>
  14. </goals>
  15. </execution>
  16. </executions>
  17. </plugin>

2.2、修改/xxl-job-admin/pom.xml

  1. <plugin>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-maven-plugin</artifactId>
  4. <version>${spring-boot.version}</version>
  5. <configuration>
  6. <source>1.8</source>
  7. <target>1.8</target>
  8. </configuration>
  9. <executions>
  10. <execution>
  11. <goals>
  12. <goal>repackage</goal>
  13. </goals>
  14. </execution>
  15. </executions>
  16. </plugin>

注意:如果jdk为7此步骤忽略;源码默认用jdk7编译,这里改成jdk8。

3、MySQL数据库
新建数据库及相关表结构:
执行xxl-job/doc/db/tables_xxl_job.sql数据库脚本;

修改配置
修改/xxl-job-admin/src/main/resources/xxl-job-admin.properties脚本中关于数据库的配置:

  1. 修改/xxl-job-admin/src/main/resources/xxl-job-admin.properties脚本中关于数据库的配置:
  2. xxl.job.db.driverClass=com.mysql.jdbc.Driver
  3. xxl.job.db.url=jdbc:mysql://localhost:3306/xxl-job?useUnicode=true&characterEncoding=UTF-8
  4. xxl.job.db.user=root
  5. xxl.job.db.password=

4、运行xxl-job-admin服务
4.1、打成war包然后放到tomcat容器中执行;
mvn clean package -U

4.2、若是调试,则可以直接在IDEA/Eclipse中配置一下tomcat,然后直接运行
启动完成后在浏览器输入:http://localhost:8080/xxl-job-admin/
默认账户:admin/123456
可在/xxl-job-admin/src/main/resources/xxl-job-admin.properties脚本中进行修改配置;

5、任务调度测试
选用/xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springbootdemo作为客户端测试demo;

5.1、新建JobHandler任务

  1. package com.xxl.job.executor.service.jobhandler;
  2.  
  3. import java.time.LocalDateTime;
  4. import java.time.format.DateTimeFormatter;
  5.  
  6. import org.springframework.stereotype.Component;
  7.  
  8. import com.xxl.job.core.biz.model.ReturnT;
  9. import com.xxl.job.core.handler.IJobHandler;
  10. import com.xxl.job.core.handler.annotation.JobHandler;
  11.  
  12. /**
  13. * 任务Handler示例(Bean模式)
  14. * <p>
  15. * 开发步骤:
  16. * 1、继承"IJobHandler":“com.xxl.job.core.handler.IJobHandler”;
  17. * 2、注册到Spring容器:添加“@Component”注解,被Spring容器扫描为Bean实例;
  18. * 3、注册到执行器工厂:添加“@JobHandler(value="自定义jobhandler名称")”注解,注解value值对应的是调度中心新建任务的JobHandler属性的值。
  19. * 4、执行日志:需要通过 "XxlJobLogger.log" 打印执行日志;
  20. */
  21. @JobHandler(value = "helloJobHandler")
  22. @Component
  23. public class HelloJobHandler extends IJobHandler {
  24.  
  25. @Override
  26. public ReturnT<String> execute(String param) {
  27. String now = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
  28. System.out.println(now + "XXL-JOB, Hello World.");
  29. return SUCCESS;
  30. }
  31.  
  32. }

5.2、配置
配置脚本/xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/application.properties

  1. xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin

5.3、构建打包
$ cd /xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot/
$ mvn clean package -U
$ cd target

5.4、启动多个客户端服务
java -jar xxl-job-executor-sample-springboot-2.0.2.jar --server.port=8901 --xxl.job.executor.port=8801

java -jar xxl-job-executor-sample-springboot-2.0.2.jar --server.port=8902 --xxl.job.executor.port=8802

或者通过IDE启动XxlJobExecutorApplication入口类

自此要确保xxl-job-admin、xxl-job-executor-sample-springboot成功运行。

6、后台管理页面配置任务
6.1、执行器
执行器管理 -> 新建执行器

新建执行器的参数,跟/xxl-job-executor-sample-springboot/src/main/resources/application.properties文件一致,如下:

  1. ### xxl-job executor address
  2. xxl.job.executor.appname=xxl-job-executor-sample
  3. xxl.job.executor.ip=
  4. xxl.job.executor.port=9999

6.2、任务
任务管理 -> 新建任务

运行模式:@JobHandler(value = "helloJobHandler")中配置的value

点击"启动"按钮,执行任务,此时在控制台会看到如下打印信息:

  1. 2019-04-28 17:02:10XXL-JOB, Hello World.
  2. 2019-04-28 17:02:15XXL-JOB, Hello World.
  3. 2019-04-28 17:02:20XXL-JOB, Hello World.
  4. 2019-04-28 17:02:25XXL-JOB, Hello World.
  5. 2019-04-28 17:02:30XXL-JOB, Hello World.
  6. 2019-04-28 17:02:35XXL-JOB, Hello World.
  7. 2019-04-28 17:02:40XXL-JOB, Hello World.
  8. 2019-04-28 17:02:45XXL-JOB, Hello World.

7、查看调度日志

xxl-job入门实践的更多相关文章

  1. 分布式学习系列【dubbo入门实践】

    分布式学习系列[dubbo入门实践] dubbo架构 组成部分:provider,consumer,registry,monitor: provider,consumer注册,订阅类似于消息队列的注册 ...

  2. sass、less和stylus的安装使用和入门实践

    刚 开始的时候,说实话,我很反感使用css预处理器这种新玩意的,因为其中涉及到了编程的东西,私以为很复杂,而且考虑到项目不是一天能够完成的,也很少是 一个人完成的,对于这种团队的项目开发,前端实践用c ...

  3. Django入门实践(三)

    Django入门实践(三) Django简单应用 前面简单示例说明了views和Template的工作过程,但是Django最核心的是App,涉及到App则会和Model(数据库)打交道.下面举的例子 ...

  4. Django入门实践(二)

    Django入门实践(二) Django模板简单实例 上篇中将html写在了views中,这种混合方式(指Template和views混在一起)不适合大型开发,而且代码不易管理和维护,下面就用Djan ...

  5. Django入门实践(一)

    Django入门实践(一) Django编程思路+入门 认识Django有一个多月了,我觉得学习Django应该先理清它的编程思路.它是典型的MVC框架(在Django里也称MTV),我觉得Djang ...

  6. 全文搜索引擎Elasticsearch入门实践

    全文搜索引擎Elasticsearch入门实践 感谢阮一峰的网络日志全文搜索引擎 Elasticsearch 入门教程 安装 首先需要依赖Java环境.Elasticsearch官网https://w ...

  7. 【实战】Docker入门实践二:Docker服务基本操作 和 测试Hello World

    操作环境 操作系统:CentOS7.2 内存:1GB CPU:2核 Docker服务常用命令 docker服务操作命令如下 service docker start #启动服务 service doc ...

  8. Cookie快速入门实践

    第一个servlet[比如是CookieDemo01]中的代码如下: import javax.servlet.http.Cookie; //--------省略若干代码----------- pro ...

  9. 微服务 + Docker + Kubernetes 入门实践 目录

    微服务 + Docker + Kubernetes 入门实践: 微服务概念 微服务的一些基本概念 环境准备 Ubuntu & Docker 本文主要讲解在 Ubuntu 上安装和配置 Dock ...

  10. 这是一次 docker 入门实践

    前言 其实接触 docker 也有一段时间了,但是一直没有做下总结,现在网上关于 docker 的介绍也有很多了,本着好记性不如烂笔头的原则,还是自己再记录一波吧. 实现目标 安装 docker ce ...

随机推荐

  1. Flume+Kafka+Storm+Hbase+HDSF+Poi整合

    Flume+Kafka+Storm+Hbase+HDSF+Poi整合 需求: 针对一个网站,我们需要根据用户的行为记录日志信息,分析对我们有用的数据. 举例:这个网站www.hongten.com(当 ...

  2. Python算术运算

    一.算术运算1.四则运算1+(100-20)/4+5*22.乘方运算2**103.求摸运算7%5 4.取整运算  7//5 = 1 5.绝对值函数  abs(-100) 6.导入数学函数后才能执行类似 ...

  3. mysql_Navicat数据库破解

    Navicat Premium 12.1.16.0安装与激活 Navicat Premium 12是一套数据库开发管理工具,支持连接 MySQL.Oracle等多种数据库,可以快速轻松地创建.管理和维 ...

  4. [LeetCode] Longest Mountain in Array 数组中最长的山

    Let's call any (contiguous) subarray B (of A) a mountain if the following properties hold: B.length ...

  5. PHP实现微信模板消息发送给指定用户

    使用公众号的模板消息功能,必须是认证过的服务号,需要发送微信号的openid,同一微信号在不同公众号下的openid是不同的,在公众号下是唯一的,获取不到微信号 进入公众平台  功能->模板消息 ...

  6. Java基础——关于jar包的知识

    在学习jar包之前,要先弄懂Java包,以及关于Java包的相关概念. 一.包 为了更好地组织类,Java提供了包机制.包是类的容器,用于分隔类名空间.如果没有指定包名,所有的示例都属于一个默认的无名 ...

  7. ES6新增对象方法的访问描述符:get(只读)、set(只写)

    Es6新增对象方法的访问描述符:get(只读).set(只写),可以直接使用,一般用于数据监听,用途类似于vue.$watch. var obj = { a:1, get bar() { return ...

  8. 在C++中,setw(int n)

    setw(int n)用来控制输出间隔例如:cout<<'s'<<setw(8)<<'a'<<endl;则在屏幕显示s        a //s与a之间 ...

  9. ueditorUE 去掉本地保存成功的提示框!

    网上修改什么JS的太麻烦,这样比较暴力,仅供参考 这里直接修改的样式: ue.ready(function () {                 $(".edui-editor-mess ...

  10. External Snapshot management

    External Snapshot management Symptom As of at least libvirt 1.1.1, external snapshot support is inco ...