XXLJOB详细说明

单机:Timer、ExectorService、spring@scheduled

分布式:xxl-job、quartz、elastic-job

由调度中心和执行器组成,调度中心提供一个web管理配置任务和执行器,调度中心通过rpc触发执行器

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

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

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

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

6、一致性:“调度中心”通过DB锁保证集群分布式调度的一致性,一次任务调度只会触发一次执行

7、邮件报警:任务失败时支持邮件报警,支持配置多邮件地址群发报警邮件;

8、任务进度监控:支持实时监控任务进度;

xxl-job调度中心配置内容说明:

执行器配置:

@BeanpublicXxlJobSpringExecutorxxlJobExecutor(){logger.info(">>>>>>>>>>>xxl-jobconfiginit.");XxlJobSpringExecutorxxlJobSpringExecutor=newXxlJobSpringExecutor();xxlJobSpringExecutor.setAdminAddresses(adminAddresses);xxlJobSpringExecutor.setAppname(appname);xxlJobSpringExecutor.setAddress(address);xxlJobSpringExecutor.setIp(ip);xxlJobSpringExecutor.setPort(port);xxlJobSpringExecutor.setAccessToken(accessToken);xxlJobSpringExecutor.setLogPath(logPath);xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);returnxxlJobSpringExecutor;}阻塞处理策略1.单机串行(默认)调度请求进入单机执行器后,调度请求进入队列并以串行方式运行(上一次还没执行完毕,后面的排队等待)

调度请求进入单机执行器后,发现执行器存在运行的调度任务,本次请求将会被丢弃并标记为失败

调度请求进入单机执行器后,发现执行器存在运行的调度任务,将会终止运行中的调度任务并清空队列,然后运行本地调度任务

路由策略,核心就是xxljob到底去哪台服务器找任务执行

当选择该策略时,会选择执行器注册地址的第一台机器执行,如果第一台机器出现故障,则调度任务失败。

使用注册地址列表中的第一个address

当选择该策略时,会选择执行器注册地址的最后一台机器执行,如果机器出现故障,则调度任务失败。

当选择该策略时,会按照执行器注册地址轮询分配任务,如果其中一台机器出现故障,调度任务失败,任务不会转移

分组下机器地址相同,不同JOB均匀散列在不同机器上,保证分组下机器分配JOB平均;且每个JOB固定调度其中一台机器;

当选择该策略时,每个任务按照Hash算法固定选择某一台机器。如果那台机器出现故障,调度任务失败,任务不会转移。

对每一个使用的地址进行保存次数,之后按照次数进行从小到大的排序,取出次数小的进行使用,再给当前次数加一,一直这样操作

将好久不使用的排到最前面

当选择该策略时,按照顺序依次进行心跳检测,如果其中一台机器出现故障,则会转移到下一个执行器,若心跳检测成功,会选定为目标执行器并发起调度

当要执行的机器正忙(无可执行线程/需要排队),则使用下一个address执行。

当选择该策略时,按照顺序依次进行空闲检测,如果其中一台机器出现故障,则会转移到下一个执行器,若空闲检测成功,会选定为目标执行器并发起调度。

@XxlJob("testDemo2")publicReturnTtestDemo2(){//index:当前分片序号(从0开始),执行器集群列表中当前执行器的序号intindex=XxlJobHelper.getShardIndex();//total:总分片数,执行器集群的总机器数量inttotal=XxlJobHelper.getShardTotal();Listdates=query();for(Useruser:dates){if(user.getId().hashCode()%total==index){log.info("当前分片机器序号:{},处理的数据:{}",index,JSONObject.toJSONString(user));}}//返回参数可用于查看结果、执行成功数等XxlJobHelper.handleSuccess("成功");returnReturnT.SUCCESS;}调度过期策略

父子任务,是指父任务执行后会自动调用子任务,完成一种类似于链式的调用,在使用时只需要配置子任务的ID即可

@XxlJob("paramTask")publicReturnTparamTask(){XxlJobHelper.log("paramTask的定时任务开始");//单个参数Stringparam=XxlJobHelper.getJobParam();if(StringUtils.isNotBlank(param)){log.info("单个参数:{}",param);//多个参数String[]params=param.split(",");log.info("第一个参数:{}",params[0]);log.info("第二个参数:{}",params[1]);}//返回参数可用于查看结果、执行成功数等XxlJobHelper.handleSuccess("成功");returnReturnT.SUCCESS;}日志回调指执行器在执行任务时可以将执行日志传递给调度中心,即使任务没有执行完成,调度中心也可以看到回调的调度日志内容。更细化的分析任务执行情况

@XxlJob("logbackTask")publicReturnTlogbackTask()throwsInterruptedException{XxlJobHelper.log("当前程序执行到了:{}行",156);Thread.sleep(5000);XxlJobHelper.log("当前程序执行到了:{}行",200);Thread.sleep(5000);XxlJobHelper.log("当前程序执行完成");XxlJobHelper.handleSuccess("成功");returnReturnT.SUCCESS;}任务的生命周期xxl-job支持在调用任务时,第一次调用时先执行指定的方法,然后在执行具体的任务,当执行器停止时会执行指定的方法

@XxlJob(value="lifeCycleTask",init="startInit",destroy="destroy")publicReturnTlifeCycleTask()throwsInterruptedException{log.info("==============生命周期演示============");XxlJobHelper.handleSuccess("成功");returnReturnT.SUCCESS;}publicvoidstartInit(){log.info("第一次调用当前任务时,才会执行,预处理");}publicvoiddestroy(){log.info("当执行器停止时才会执行");}XXL-JOB缺点“调度中心”通过DB锁的形式来保证集群分布式调度的一致性,如果耗时较小的短调度任务很多,随着调度中心集群数量增加,会增大DB的压力,数据库的锁竞争会比较厉害,造成数据库压力,性能下降。

THE END
1.Docker部署XxlJob分布式任务调度中心(超详细)简介: Docker部署Xxl-Job分布式任务调度中心(超详细) 前言 XXL-Job是一个开源的分布式任务调度中心,它提供了一个可视化的任务管理界面,可以方便地创建、编辑和监控任务。XXL-Job支持多种任务类型,包括简单的Java任务、Shell任务、Cron任务等。它还提供了任务执行日志、报警机制、任务依赖等功能,可以满足各种任务调度的https://developer.aliyun.com/article/1492440
2.阿里云系列利用yaml文件部署Nacos&Xxl随着容器化的技术成熟落地,拥抱各种成熟的容器化集群平台是加速我们落地的必然之路,目前国内以阿里云、华为云、腾讯云为平台的供应商为主,国外则以AWS,Azure为主,让我们借助平台已有的优势进行快速落地提高生产力,本文以常见的微服务中间件配置中心和调度中心部署到阿里云的ACK为例说明 部署步骤 01.新建命名空间middlewarehttps://blog.csdn.net/AiMaiShanHuHai/article/details/136535711
3.dockercompose部署xxljob包含发送邮件sandaman2015compose部署文件如下: version: '3' services: xxl-job-test: restart: always image: xuxueli/xxl-job-admin:2.3.0 container_name: xxl-job-admin-test environment: PARAMS: "--spring.datasource.url=jdbc:mysql://数据库地址:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&servhttps://www.cnblogs.com/sandaman2019/p/16338359.html
4.centos部署xxljob51CTO博客已为您找到关于centos 部署 xxljob的相关内容,包含IT学习相关文档代码介绍、相关教程视频课程,以及centos 部署 xxljob问答内容。更多centos 部署 xxljob相关解答可以来51CTO博客参与分享和学习,帮助广大IT技术人实现成长和进步。https://blog.51cto.com/topic/centosbushuxxljob.html
5.分布式调度XXLJob整合Springboot2.X实战操作过程(推荐)java五、XXL-Job实战操作 搭建XXL-Job相关环境步骤: 创建数据库脚本 部署XXL-Job服务端 客户端项目添加依赖 注意 Client-Server通信,需要网络互通才行 所以不能一个是阿里云ECS,一个是本地电脑 建议:本地电脑安装Docker,或者本地Linux虚拟机安装Docker部署 https://www.jb51.net/article/243790.htm
6.caughtexception·Issue#1088·xuxueli/xxl2.依赖xxl-job版本信息为 <xxl-job-core.version>2.1.0</xxl-job-core.version> 3.任务调度中心版本为 场景: 1.虽然报错,但是执行器能被正常调用并执行,调度日志也都显示成功 2.执行器项目部署在阿里云edas正式环境命名空间的k8s集群上,调度器部署在阿里云测试环境命名空间的k8s集群上(不同命名空间互访相当于跨https://github.com/xuxueli/xxl-job/issues/1088
7.Docker最佳实战:Docker构建XXL<mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url></mirror> 3. 编译 XXL-JOB Jar 包 3.1 下载 XXL-JOB 源码包 代码语言:bash 复制 cd~/code/giteegitclone http://gitee.com/xuxueli0323/xxl-job https://cloud.tencent.com/developer/article/2417727
8.微服务架构海量数据商用短链平台项目大课(视频+资料)68.2-rancher2.x部署account-shop微服务实战.mp4 68.3-rancher2.x部署data-link微服务实战.mp4 68.4-rancher2.x部署中间件-mysql8.0.mp4 68.5-mysql新建nacos和xxl-job库表实战.mp4 69.1-ranche2.x部署nacos和调整jvm内存实战.mp4 69.2-ranche2.x部署xxl-job和redis6实战.mp4 https://www.vipc6.com/20601.html
9.阿里云主机上使用docker安装xxljobadmin2.1.2ok 至此 xxl-job就搭建起来了,访问看下吧 5.验证登录 验证地址:http://47.107.36.11:8080/xxl-job-admin/toLogin 默认端口是8080 如果访问不了,需要开通阿里云主机的8080端口 登录页面如下: image.png 默认的登录用户:admin/123456https://www.jianshu.com/p/3a92c6792d4b
10.黑马大型Java企业级项目《中州养老》实战教程(视频+代码+讲义+20-调度框架-xxljob-环境及入门.wmv 20-调度框架-xxljob-环境及入门(1).wmv 21-调度框架-xxljob-轮询及分片广播.wmv 22-预约管理-集成xxljob处理过期预约.wmv 23-今日总结.wmv <day04-权限认证-基础> 01-昨日内容回顾.wmv 02-今日内容介绍.wmv https://www.bw1.net/5458/
11.项目采坑日志—XxlJob配置迁移到Nacos,项目运行提示CouldnotXxlJob配置迁移到Nacos,项目运行提示Could not resolve placeholder ‘xxl.job.accessToken’ in value “${xxl.job.accessToke} 问题描述 问题原因解决方案 问题描述 在Spring Boot项目中将bootstrap.yml文件中XxlJob的配置信息迁移到Nacos中出现错误,提示Could not resolve placeholder ‘xxl.job.accessToken’ inhttp://www.jaozi.cn/?article/1284801