1、概述

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

几个特性:

1、简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手;
2、动态:支持动态修改任务状态、启动/停止任务,以及终止运行中任务,即时生效
3、注册中心: 执行器会周期性自动注册任务, 调度中心将会自动发现注册的任务并触发执行,每30秒清理一次注册表中的无效机器。同时,也支持手动录入执行器地址;
4 、失败处理策略:每10秒检测失败任务,报警和重试;
5、一致性:“调度中心”通过DB锁保证集群分布式调度的一致性, 一次任务调度只会触发一次执行
6、执行器HA(分布式):任务分布式执行,任务"执行器"支持集群部署,可保证任务执行HA
7、弹性扩容缩容:一旦有新执行器机器上线或者下线,下次调度时将会重新分配任务

2、架构

3、在xuxueli项目中使用

从git拉取代码:xxl-job: 一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 - Gitee.com拉取项目后运行项目自带的tables_xxl_job.sql文件,在Navcat中去运行,生成需要的表

表描述

表名 描述
xxl_job_group 执行器分组
xxl_job_info 任务信息
xxl_job_lock 任务通知分布式锁
xxl_job_log 任务执行日志
xxl_job_log_report 日志报告
xxl_job_logglue glue模式任务日志
xxl_job_registry 执行器注册信息
xxl_job_user 用户表

项目个模块说明

xxl-job-admin:调度中心

xxl-job-core:公共依赖

xxl-job-executor:执行器Sample示例(选择合适的版本执行器,可直接使用,也可以参考其并将现有项目改造成执行器)
xxl-job-executor-sample-spring:Spring版本,通过Spring容器管理执行器,比较通用,推荐这种方式;
xxl-job-executor-sample-springboot:Springboot版本,通过Springboot管理执行器;
xxl-job-executor-sample-jfinal:JFinal版本,通过JFinal管理执行器;
xxl-job-executor-sample-nutz:Nutz版本,通过Nutz管理执行器;

这里选择springboot执行器

admin配置文件

打开xxl-job-admin模块,在application.properties中进行后台的配置

执行器模块的配置文件

启动拉取的项目:

先启动admin模块,在启动执行器模块。

我们启动XxlJobAdminApplication类和XxlJobExecutorApplication,访问http://localhost:8080/xxl-job-admin 默认账户admn,密码123456

输入账号密码后即可进入系统

配置成功执行器,就会看到下图,要不然online及其地址是空的(可能会看不到自己配置的执行器,可以手动添加不输入地址,默认会自动寻找对于执行器的地址的)

编写自己的定时逻辑

定位到springboot模块下的jobhandler层下面

在任务管理里面新增任务

注意这里的JobHandler对应@XxlJob注解里面的名称

然后在找到刚刚添加的任务,点击操作里面的启动

可以看到结果,刚刚编写的代码已经被执行了

4、SpringBoot集成

新建项目并引入依赖

<dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>2.3.0</version>
</dependency>

添加配置文件

server:# 注意xxljob使用的端口为8080,所以这里需要指定端口号不为8080(默认为8080),防止冲突# 如果xxljob不为8080或者不在同一个服务器上,则不用指定port: 8081
xxl:job:admin:# xxl-job后台管理界面的地址addresses: http://127.0.0.1:8080/xxl-job-adminexecutor:# 此执行器的名称appname: first-xxljob# 此执行器的端口port: 38801# 此执行器的日志存放路径logpath: D:/gitload_pro/xxl-job/log# 此执行器的日志保存时间logretentiondays: 1

添加配置类

将xxl-job-executor-sample-springboot这个模块下的XxlJobConfig复制一份到项目中,然后将相关配置设置好即可。

注意:这里将accessToken、address、ip给注释了,因为上面的配置文件没有写,不注释会报错

package com.zut.config;import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import lombok.RequiredArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** xxl-job config** @author xuxueli 2017-04-28*/
@Configuration
@RequiredArgsConstructor
public class XxlJobConfig {private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);@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;@Beanpublic XxlJobSpringExecutor xxlJobExecutor() {logger.info(">>>>>>>>>>> xxl-job config init.");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;}/*** 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP;**      1、引入依赖:*          <dependency>*             <groupId>org.springframework.cloud</groupId>*             <artifactId>spring-cloud-commons</artifactId>*             <version>${version}</version>*         </dependency>**      2、配置文件,或者容器启动变量*          spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'**      3、获取IP*          String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();*/}

创建自己的定时任务

@Component
public class MyJob {@XxlJob("SpringBoot—XXLJob")public void test(){System.out.println("This is SpringBoot XXLJob Test!");}
}

在xxl-job-admin页面添加执行器

注意:我们可以将xxl-job-admin项目拷到自己的项目,或者将其单独部署在服务器并启动

登录:http://localhost:8080/xxl-job-admin admin/123456

点击执行器管理==》新增

此处的AppName填你项目中配置的xxl.job.executor.appname名称。选择自动注册,保存即可。

添加任务

点击任务管理==》点击执行器下拉框

选择刚刚添加的执行器,然后点击“新增”按钮,新增任务:

启动自己的项目

注意,此处的JobHandler填@XxlJob注解里面的值。填好点击保存即可。就可以看到我们已经有一条任务了,此时点击“操作”,然后点击“启动”,定时任务就运行了。笔者这里是每5秒运行一次。

测试

5、将xxl-job部署在docker上

编写docker-compose.yml

version: "1
services:xxl_job_admin:# 指定容器名称container_name: xxl_job_admin# 重启机制restart: alwaysimage: openjdk:8volumes:# 本地jar包路径- /usr/soft/jars/xxl-job-admin-2.3.0.jar:/usr/soft/jars/xxl-job-admin-2.3.0.jar# 本地脚本路径- /usr/soft/xxljob_shell/xxl-job-admin-2.3.0.sh:/usr/soft/xxljob_shell/xxl-job-admin-2.3.0.sh# 挂载日志 -v A:B ,A指宿主机位置,B指容器位置- /usr/soft/logs/xxl_job_admin:/data/applogs# 指定容器时间为宿主机时间- /etc/localtime:/etc/localtime# 访问端口ports:- "8080:8080"environment:# 指定时区- TZ="Asia/Shanghai"#启动容器后执行的命令entrypoint: sh /usr/soft/xxljob_shell/xxl-job-admin-2.3.0.sh

启动脚本,也就是上一步最后一行的脚本

上传到:/usr/soft/xxljob_shell/xxl-job-admin-2.3.0.sh

nohup java -Duser.timezone=Asia/Shanghai
-jar /usr/soft/jars/xxl-job-admin-2.3.0.jar
--server.port=8080 >/dev/null 2>&1

构建容器

docker-compose -f docker-compose.yml up -d

执行上面的脚本

./xxl-job-admin-2.3.0.sh

如果没有权限执行赋权命令:chmod 777  xxl-job-admin-2.3.0.sh

查看是否部署成功

将http://127.0.0.1:8080/xxl-job-admin/toLogin换成自己服务器的ip和指定的端口

出现下图表示部署成功

将自己项目的ip和端口改成服务器上部署的端口和ip,然后上传到服务器,执行命令

java -jar jar包名称

在上面的页面启动定时任务

发现定时任务已经启动

SpringBoot整合XXLJob+Docker部署相关推荐

  1. SpringBoot整合!docker更新镜像名称

    认识HTTP 什么是超文本 什么是传输 什么是协议 HTTP相关组件 网络模型 OSI 模型 浏览器 Web服务器 CDN WAF WebService HTML Web页面构成 与 HTTP 有关的 ...

  2. Springboot整合xxl-job实现任务自定义定时任务

    1.引入相关依赖 maven:<dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job ...

  3. xxljob 配置文件_SpringBoot整合Xxl-Job的完整步骤记录

    一.下载Xxl-Job源代码并导入本地并运行 1.使用Idea或Eclipse导入 2.执行sql脚本(红色标记处) 3.运行xxl-job-admin(xxl-job后台管理,主要方便管理各种各样的 ...

  4. Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数Demo

    Docker 部署SpringBoot项目整合 Redis 镜像做访问计数Demo 最终效果如下 大概就几个步骤 1.安装 Docker CE 2.运行 Redis 镜像 3.Java 环境准备 4. ...

  5. 阿里云使用Docker部署minio整合SpringBoot

    第一步:拉取镜像 docker pull minio/minio 第二步:运行镜像 docker run \-p 19000:9000 \-p 19001:9001 \--name sifan-min ...

  6. Docker 部署SpringBoot项目不香吗?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:流星007 链接:toutiao.com/i68433912 ...

  7. docker部署springboot_创建SpringBoot项目部署到docker全过程

    目录 docker 介绍 安装 docker Ubuntu 安装 docker CentOS 安装 docker 通过脚本安装 拉取 java 环境 创建 springboot 项目 打包 sprin ...

  8. xxl-job搭建、部署、SpringBoot集成xxl-job

    一.搭建xxl-job 1.下载xxl-job代码 码云地址:https://gitee.com/xuxueli0323/xxl-job gitHub地址:https://github.com/xux ...

  9. docker部署springboot_Docker+SpringBoot快速构建和部署应用

    前言 Docker技术发展为当前流行的微服务提供了更加便利的环境,使用SpringBoot+Docker部署和发布应用,其实也是一件比较简单的事情.当前,前提是得有Docker的基础. 构建一个Spr ...

最新文章

  1. 细节详解 | Bert,GPT,RNN及LSTM模型
  2. linux网卡钩子,linux-Netfilter钩子注册与网络子系统
  3. Linux 文件系统初探
  4. 我们学过 飞鸽传书 的应该知道
  5. 4999元起!iQOO 9 Pro赛道版上架:迄今为止成本最高手机后盖
  6. 小米MIX 4无线反向充电安排上了?MIUI测试版固件中暗藏玄机
  7. 如果网站的 Cookie 特别多特别大,会发生什么情况?
  8. 凯撒密码matlab转换,教你如何简单使用凯撒密码 详细始末
  9. Java动态数组ArrayList
  10. revit二次开发概念_Revit二次开发教程:BIM自学入门Revit二次开发
  11. 基于Python深度学习的DGA域名检测
  12. 洛杉矶儿童医院被列为美国西部第一,在全美儿童医院中的总体排名升至第五
  13. 2022 极术通讯-基于安谋科技 “星辰” STAR-MC1的灵动MM32F2570开发板深度评测
  14. 如何使用rclone从AWS S3迁移到IBM COS - part 2 - 同步腾讯云对象存储
  15. 游戏程序员的2012年终总结
  16. Android使用AIUI快速搭建智能助手
  17. 历史上的今天——4月1日
  18. linux iptables源ip替换,Linux更改源IP地址的传入流量
  19. 标准C函数库头文件、POSIX标准库头文件和Windows API函数库头文件说明
  20. 《创新创业实训》网课答案解析

热门文章

  1. 2019年了,iOS提交审核又被拒了
  2. MySQL添加索引的五种方法
  3. 如何使用systemctl管理postgres数据库启停
  4. itchat+pyecharts实现微信好友分析及可视化
  5. 小程序下的地图还能这么玩,你知道吗?
  6. Qt on Android: http下载与Json解析
  7. 世界500强华电集团:“远程集控 少人维护”,智能乌江水电管理从锐捷无线网开始...
  8. git的分支 - 标签 -以及ssh免密配置- idea中的git
  9. linux 两个配置文件,Vivaldi 2.4发布,多个用户配置文件和新的自定义选项
  10. Kickstarter | 什么反重力科技上线仅一小时获千粉