概述xxl-job框架

​ 首先我们要知道什么是XXL-JOB?

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

​ XXL-JOB的有点特性:

​ 1、简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手;

​ 2、动态:支持动态修改任务状态、启动/停止任务,以及终止运行中任务,即时生效;

​ 3、调度中心HA(中心式):调度采用中心式设计,“调度中心”自研调度组件并支持集群部署,可保证调度中心HA;

​ 4、执行器HA(分布式):任务分布式执行,任务"执行器"支持集群部署,可保证任务执行HA;

​ 5、注册中心: 执行器会周期性自动注册任务, 调度中心将会自动发现注册的任务并触发执行。同时,也支持手动录入执行器地址;

​ 6、弹性扩容缩容:一旦有新执行器机器上线或者下线,下次调度时将会重新分配任务;

​ 7、路由策略:执行器集群部署时提供丰富的路由策略,包括:第一个、最后一个、轮询、随机、一致性HASH、最不经常使用、最近最久未使用、故障转移、忙碌转移等;

​ 8、故障转移:任务路由策略选择"故障转移"情况下,如果执行器集群中某一台机器故障,将会自动Failover切换到一台正常的执行器发送调度请求。

​ 9、阻塞处理策略:调度过于密集执行器来不及处理时的处理策略,策略包括:单机串行(默认)、丢弃后续调度、覆盖之前调度;

​ 10、任务超时控制:支持自定义任务超时时间,任务运行超时将会主动中断任务;

​ 11、任务失败重试:支持自定义任务失败重试次数,当任务失败时将会按照预设的失败重试次数主动进行重试;其中分片任务支持分片粒度的失败重试;

​ 12、任务失败告警;默认提供邮件方式失败告警,同时预留扩展接口,可方便的扩展短信、钉钉等告警方式;

​ 13、分片广播任务:执行器集群部署时,任务路由策略选择"分片广播"情况下,一次任务调度将会广播触发集群中所有执行器执行一次任务,可根据分片参数开发分片任务;

​ 14、动态分片:分片广播任务以执行器为维度进行分片,支持动态扩容执行器集群从而动态增加分片数量,协同进行业务处理;在进行大数据量业务操作时可显著提升任务处理能力和速度。

​ 15、事件触发:除了"Cron方式"和"任务依赖方式"触发任务执行之外,支持基于事件的触发任务方式。调度中心提供触发任务单次执行的API服务,可根据业务事件灵活触发

​ …

是目前主流的分布式任务调度平台,许多公司的产品业务都有XXL-JOB的接入

开源社区使用

首先从GitHub上面将项目clone下来,如果网络问题导致速度慢也可以从Gitee上面拉取

https://www.xuxueli.com/xxl-job/#/

xxl-job架构图

(压缩之后可以在文件中发现他的架构图)

分布式任务项目的简单搭建

在GitHub上获取源代码

解压、导入开发工具

修改pom.xml文件:

主要修改为:配置新的JDK版本:JDK8(默认为JDK7)

1.修改Admin中的pmx文件

2.修改xxl-job-master的pom配置文件

两个pom文件都要添加

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>${maven-source-plugin.version}</version>
<configuration>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>

修改数据源

对应数据库文件,可以导入到自己的数据库中

注意:如果库中有同名的表了,需要到文件中注释掉创建表的步骤

在数据库中表的介绍

导入maven

结构相关介绍:

xxl-job-admin:调度中心

xxl-job-core:公共依赖

xxl-job-executor…:执行器

文件中有sql文件,运行生成库表

  1. xxl_job_lock:任务调度锁表;
  • xxl_job_group:执行器信息表,维护任务执行器信息;
  • xxl_job_info:调度扩展信息表: 用于保存XXL-JOB调度任务的扩展信息,如任务分组、任务名、机器地址、执行器、执行入参和报警邮件等等;
  • xxl_job_log:调度日志表: 用于保存XXL-JOB任务调度的历史信息,如调度结果、执行结果、调度入参、调度机器和执行器等等;
  • xxl_job_log_report:调度日志报表:用户存储XXL-JOB任务调度日志的报表,调度中心报表功能页面会用到;
  • xxl_job_logglue:任务GLUE日志:用于保存GLUE更新历史,用于支持GLUE的版本回溯功能;
  • xxl_job_registry:执行器注册表,维护在线的执行器和调度中心机器地址信息;
  • xxl_job_user:系统用户表;

启动服务

需要启动两个服务,第一个是图形化界面的启动,一个是任务SpringBoot定时任务类基本同等于我们项目中的任务类

启动xxl-job-admin项目[图形化界面]

路径: D:\demo\xxl-job-master\xxl-job-admin\src\main\java\com\xxl\job\admin\XxlJobAdminApplication.java

启动xxl-job-executor-sample-springboot项目[定时任务类]

路径: D:\demo\xxl-job-master\xxl-job-executor-samples\xxl-job-executor-sample-springboot\src\main\java\com\xxl\job\executor\XxlJobExecutorApplication.java

注意:其实我们项目中有两个模板,启动那个都可以,只是我用了SpringBoot,所以就只启动了这个

启动结果

访问登录页面

输入地址就可以访问到对应的图形化界面了

网址:http://localhost:8080/xxl-job-admin/

默认的管理员

账号:admin

密码:123456

登录成功的页面

自建分布式任务:Hello world

执行器主要分为两种方式:

  1. 自动注册
  2. 手动注册

手动图解[自动不弄,可以看视频学习]

①创建执行器

②创建任务

③在任务后面--》操作按钮--》开启任务

④查看日志

执行器注意事项

1、确认pom文件中引入了 “xxl-job-core” 的maven依赖;

2、配置文件:

==>: xxl.job.admin.addresses配置(调度中心地址:例如http://127.0.0.1:8080/xxl-job-admin)

==>: xxl.job.executor.appname配置(执行器AppName,可视化界面添加执行器时需要)

==>: xxl.job.executor.port配置(执行器端口号,多个执行器时注意端口号不一致)

3、不同版本的机器地址输入的格式不一样

例如:

2.2版格式àhttp://IP地址:端口

1.0版格式àIP地址:端口

遇到的问题

问题1:执行器地址为空

原因--》执行器中 没有地址

解决方案--》输入地址:http://IP地址:端口

IP地址

端口

问题2:异常信息unknown code for readObject at 0x3c

1.错误提示无法找到执行器。

原因:需要启动两个项目 xxl-job-admin 、xxl-job-executor-samples (这里我用的是xxl-job-executor-sample-springboot)

2.调度成功了,但是执行不会停止,只能手动停止,执行结果是失败的。

或者启动时遇到以下的异常信息:

unknown code for readObject at 0x3c

原因:这种提示的错误一般出在admin配置address没有配对。

检查xxl-job-executor-springboot-example里面配置文件的xxl.job.admin.addresses=http://localhost:8080/xxl-job-admin

与启动步骤2是否一致

完成!

定时任务__@Xxl-JOB的使用的更多相关文章

  1. 与你相遇好幸运,使用redis设置定时任务

    参考链接: Nodejs中使用Redis来完成定时任务 自己在 window 7下编码实现: 1 > 首先查看redis版本: redis-server -v , 版本要求大于等于2.8 2&g ...

  2. [Redis]处理定时任务的2种思路

    用redis完成类似 at 命令的功能,例如订单24小时后没有支付自动关闭,定时发邮件,主要说下任务生成之后怎么触发消费. 使用 有序集合 思路: 使用sorted Sets的自动排序, key 为任 ...

  3. Spring生态研习【一】:定时任务Spring-task

    本系列具体研究一下spring生态中的重要或者常用的功能套件,今天从定时任务开始,主要是spring-task.至于quartz,下次找个时间再总结. 我的验证环境,是SpringCloud体系下,基 ...

  4. 【xxl-job】轻松实现分布式定时任务demo实例

    [项目描述]前段时间专门独立了一个spring boot服务,用于做和第三方erp系统的对接工作.此服务的第一个需求工作就是可以通过不同的规则,设置不同的定时任务,从而获取erp系统的商品数据.所以, ...

  5. springboot(整合多数据源demo,aop,定时任务,异步方法调用,以及获取properties中自定义的变量值)

    有这么一个需求 每个部门,需要操作的数据库不同,A部门要将数据放test数据库,B 部门数据 要放在test1数据库 同一个项目 需要整合 多个数据源 上传个demo 方便自己以后回看!!!!!!!! ...

  6. Storm中的定时任务

    1.全局定时器 import java.util.Map; import backtype.storm.Config; import backtype.storm.Constants; import ...

  7. 异步任务神器 和定时任务Celery

    异步任务神器 Celery Celery 在程序的运行过程中,我们经常会碰到一些耗时耗资源的操作,为了避免它们阻塞主程序的运行,我们经常会采用多线程或异步任务.比如,在 Web 开发中,对新用户的注册 ...

  8. Linux下搭建实现HttpRunnerManager的异步执行、定时任务及任务监控

    前言 在之前搭建的HttpRunnerManager接口测试平台,我们还有一些功能没有实现,比如异步执行.定时任务.任务监控等,要完成异步执行,需要搭建 RabbitMQ 等环境,今天我们就来实现这些 ...

  9. Java之定时任务全家桶

    定时任务应用非常广泛,Java提供的现有解决方案有很多.本次主要讲schedule.quartz.xxl-job.shedlock等相关的代码实践. 一.SpringBoot使用Schedule 核心 ...

随机推荐

  1. SqlServer 局域网内不能连接对方数据库?

    一直都是连接的远程测试服务器的数据库,今天想把自己的数据库开放出来让公司同事连接,竟然连接失败!转了很大一个圈终于搞定了. 接下来就把这次心历路程发出来,希望能帮助到有需要的博友. PS: 我和同事的 ...

  2. Shell脚本编写登陆小程序.sh

    转至:https://www.cnblogs.com/gaohongyu/articles/12072594.html #!/bin/bash #Author:GaoHongYu #QQ:106176 ...

  3. linux常用命令与实例小全

    转至:https://www.cnblogs.com/xieguohui/p/8296864.html  linux常用命令与实例小全 阅读目录(Content) 引言 一.安装和登录 (一)    ...

  4. VUE3 之 使用标签实现动画与过渡效果(下) - 这个系列的教程通俗易懂,适合新手

    1. 概述 毛毛虫效应: 有这样一个实验,将许多毛毛虫放在一个花盆边缘,使它们首尾相接,围成一个圈.然后在离花盆很近的地方撒了一些毛毛虫的食物. 此时,毛毛虫并不会向食物的方向爬去,而是在花盆边缘,一 ...

  5. 基于 vite2 + Vue3 写一个在线帮助文档工具

    提起帮助文档,想必大家都会想到 VuePress等,我也体验了一下,但是感觉和我的思路不太一样,我希望的是那种可以直接在线编辑文档,然后无需编译就可以直接发布的方式,另外可以在线写(修改)代码并且运行 ...

  6. 网络标准之:IANA定义的传输编码

    目录 简介 IANA的传输编码方式 7bit 8bit binary quoted-printable base64 总结 简介 不同的系统或者协议可以接受的数据类型是不同的,如果要在那些不支持现有数 ...

  7. 字节一面:go的协程相比线程,轻量在哪?

    1. 用户态和内核态 Linux整个体系分为用户态和内核态(或者叫用户空间和内核空间), 那内核态究竟是什么呢? 本质上我们所说的内核态, 它是一种特殊的软件程序,特殊在哪? 统筹计算机的硬件资源,例 ...

  8. vlan端口隔离配置

    对于大型网络来说,vlan是一种不错的解决办法,但对于有些项目,项目本身不需要不同vlan之间进行互访,比如有些监控项目就只需要内网访问,那么就没有必要创建vlan了,用户如果还将不同的端口划入不同的 ...

  9. 宇宙最強的IDE - Visual Studio 25岁生日快乐

    每位开发者从入门开始或多或少都会接触过 Visual Studio , 现今的 Visual Studio 除了支持传统的 C++ , C# , Visual Basic.NET ,F# 的编程语言外 ...

  10. LGP6788题解

    太慢了!太慢了!我的替身 [The World] 是最强的替身! \(O(n^{\frac 2 3})\) 的解法!不清楚用 sbt 能不能更快一些,可能会吧.灵感来源于BZOJ4176,同时也可看到 ...