一、简介

1.1 概述

        XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。  

特性这里不多做介绍,可以去官网看。Spring自带的定时任务,无法进行集群,Quartz是个伪集群框架 不推荐集群时候进行使用。

1.5 下载

文档地址

源码仓库地址

源码仓库地址Release Download
GitHub - xuxueli/xxl-job: A distributed task scheduling framework.(分布式任务调度平台XXL-JOB)Download
xxl-job: 一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。Download

中央仓库地址

<!-- http://repo1.maven.org/maven2/com/xuxueli/xxl-job-core/ -->
<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-job-core</artifactId>
    <version>${最新稳定版本}</version>
</dependency>

1.6 环境

  • Maven3+
  • Jdk1.8+
  • Mysql5.7+

第一步:先克隆下来admin管理平台页面(这里用的Gitee,GitHub地址上面有)

git clone http://gitee.com/xuxueli0323/xxl-job

第二步:运行拉取下面项目里面doc/db/tables_xxl_job.sql 文件,在数据库工具中跑脚本。

第三步:将其拷贝下来的项目进行启动,总共有三个模块,要全部启动,三个模块里面都有启动类,一键式启动。

xxl-job-admin:后台管理界面,启动完成后,输入http://localhost:8083/xxl-job-admin 就可以访问了。

 默认账号密码:admin      123456

 点击新增按钮,即可创建新任务,这里重点需要填写 Core表达式,和 JobHandler,这个JobHandler 就是下面模块 @XxlJob("demoJobHandler")  注解里面的内容。

点击执行一次,控制台即可打印出消息。你可以在该方法下面加一个自定义控制台输出。

xxl-....-frameless:后台管理界面进入后默认里面有几个任务,可以在该模块里面更改代码

 xxl-job-....-springboot:该模块是给你看的SpringBoot的样例,因为我们肯定是自己要用SpringBoot整合xxl-job的,所以它提供了这样一个demo,我们到时候可以新建一个SpringBoot项目,只需要一个

一、导入pom

<!-- https://mvnrepository.com/artifact/com.xuxueli/xxl-job-core -->
<dependency>
     <groupId>com.xuxueli</groupId>
     <artifactId>xxl-job-core</artifactId>
     <version>2.3.1</version>
</dependency>

二、复制config/XxlJobConfig

@Configuration
public class XxlJobConfig {

    @Value("${xxl.job.admin.addresses}")
    private String adminAddresses;

    @Value("${xxl.job.accessToken}")
    private String accessToken;

    @Value("${xxl.job.executor.appname}")
    private String appname;

    @Value("${xxl.job.executor.address}")
    private String address;

    @Value("${xxl.job.executor.ip}")
    private String ip;

    @Value("${xxl.job.executor.port}")
    private int port;

    @Value("${xxl.job.executor.logpath}")
    private String logPath;

    @Value("${xxl.job.executor.logretentiondays}")
    private int logRetentionDays;

    @Bean
    public XxlJobSpringExecutor xxlJobExecutor() {
        XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
        xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
        xxlJobSpringExecutor.setAppname(appname);
        xxlJobSpringExecutor.setAddress(address);
        xxlJobSpringExecutor.setIp(ip);
        xxlJobSpringExecutor.setPort(port);
        xxlJobSpringExecutor.setAccessToken(accessToken);
        xxlJobSpringExecutor.setLogPath(logPath);
        xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
        return xxlJobSpringExecutor;
    }
}

三:复制application.proterties配置信息  注意调度中心的地址,我这里改成了8083,对应admin那个模块端口号也要改成80

# xxl-job配置
### 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册;
xxl.job.admin.addresses=http://127.0.0.1:8083/xxl-job-admin
### 执行器通讯TOKEN [选填]:非空时启用;
xxl.job.accessToken=default_token
### 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
xxl.job.executor.appname=xxl-job-executor-sample
### 执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。
xxl.job.executor.address=
### 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
xxl.job.executor.ip=
### 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
xxl.job.executor.port=9999
### 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
### 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
xxl.job.executor.logretentiondays=30

  如图,就是我新建的SpringBoot项目  整合xxl-job实现功能。

 该代码就是定时任务了。 

 

二、如何部署

   部署分为两种方式,第一种:使用Docker,这种官网有介绍,首先拉取镜像,然后进行run 即可,注意端口放心,需要放行两个端口,一个是admin管理界面端口,一个是调度器端口9999

  使用docker部署(不推荐,可能会遇到端口等之类的问题)

1.拉取镜像
    docker pull xuxueli/xxl-job-admin:2.3.1
2.运行容器
    docker run -e PARAMS="--spring.datasource.url=jdbc:mysql://mysql:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai --spring.datasource.username=root --spring.datasource.password=666888" -p 8083:8080 -p 9091:9999 -v /tmp:/data/applogs --name xxl-job-admin  -d --link mysql:mysql xuxueli/xxl-job-admin:2.3.1

##注意:运行之前 先要把数据库装了,并且跑脚本doc/xxl-job下面的数据库脚本。

 使用手动部署(推荐,这种很稳)还是一样的 要保证服务器里面数据库在运行,且跑了xxl数据库脚本。

   第一步:将其把拉取到本地的xxl-job项目打成成jar

 第二步:将其把jar包上传至服务器)

 第三步:跟部署普通Javaweb项目一样了,敲部署命令(java - jar xxl-admin 当然了 一般使用nohup 命令 这里不多做介绍 )

第四步:将其把SpringBoot整合xxl-job项目上传到服务器 进行部署。

然后输入 ip + 端口号 + /xxl-job-admin 就能访问到控制台界面了,就可以添加任务了,其它步骤跟上面一样了。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐