网站建设类的论文题目,凡科做的网站,刷单做任务的网站,急招一天一结临时工文章目录1.引言2.任务详解2.1.执行器2.2.基础配置3.路由策略(第一个)-案例4.路由策略(最后一个)-案例5.轮询策略-案例7.分片广播任务1.引言
本篇文章承接上文《XXL-JOB分布式任务调度框架(一)-基础入门》#xff0c;上一次和大家简单介绍了下 xxl-job 的由来以及使用方法上一次和大家简单介绍了下 xxl-job 的由来以及使用方法本篇文章将会详细介绍一些高级使用方法及特性。
上文中我们在新建一个任务的时候发现有很多的选项现在我们来详细聊一聊他们的作用。 )
2.任务详解
2.1.执行器
执行器任务的绑定的执行器任务触发调度时将会自动发现注册成功的执行器, 实现任务自动发现功能;
另一方面也可以方便的进行任务分组。每个任务必须绑定一个执行器
2.2.基础配置 执行器每个任务必须绑定一个执行器, 方便给任务进行分组。任务触发调度时将会自动发现注册成功的执行器, 实现任务自动发现功能; 另一方面也可以方便的进行任务分组。每个任务必须绑定一个执行器, 可在 “执行器管理” 进行设置 任务描述任务的描述信息便于任务管理 报警邮件任务调度失败时邮件通知的邮箱地址支持配置多邮箱地址配置多个邮箱地址时用逗号分隔 负责人任务的负责人 调度类型 无该类型不会主动触发调度CRON该类型将会通过CRON触发任务调度固定速度该类型将会以固定速度触发任务调度按照固定的间隔时间周期性触发 运行模式 BEAN模式以JobHandler方式维护在执行器端需要结合 “JobHandler” 属性匹配执行器中任务 GLUE模式(Java)任务以源码方式维护在调度中心该模式的任务实际上是一段继承自IJobHandler的Java类代码并 “groovy” 源码方式维护它在执行器项目中运行可使用Resource/Autowire注入执行器里中的其他服务 GLUE模式(Shell)任务以源码方式维护在调度中心该模式的任务实际上是一段 “shell” 脚本 GLUE模式(Python)任务以源码方式维护在调度中心该模式的任务实际上是一段 “python” 脚本 GLUE模式(PHP)任务以源码方式维护在调度中心该模式的任务实际上是一段 “php” 脚本 GLUE模式(NodeJS)任务以源码方式维护在调度中心该模式的任务实际上是一段 “nodejs” 脚本 GLUE模式(PowerShell)以源码方式维护在调度中心该模式的任务实际上是一段 “PowerShell” 脚本 JobHandler运行模式为 “BEAN模式” 时生效对应执行器中新开发的JobHandler类“JobHandler”注解自定义的value值 执行参数任务执行所需的参数 阻塞处理策略调度过于密集执行器来不及处理时的处理策略 单机串行默认调度请求进入单机执行器后调度请求进入FIFO队列并以串行方式运行丢弃后续调度调度请求进入单机执行器后发现执行器存在运行的调度任务本次请求将会被丢弃并标记为失败覆盖之前调度调度请求进入单机执行器后发现执行器存在运行的调度任务将会终止运行中的调度任务并清空队列然后运行本地调度任务 路由策略当执行器集群部署时提供丰富的路由策略
路由策略是指一个任务可以由多个执行器完成那具体由哪一个完成呢这就要看我们指定的路由策略了这个参数当执行器做集群部署的时候才有意义。 那么这里的第一个最后一个是按什么顺序来的呢就是点击查看-注册节点中的1234第一个指的就是1最后一个指的就是4。 子任务每个任务都拥有一个唯一的任务ID(任务ID可以从任务列表获取)当本任务执行结束并且执行成功时将会触发子任务ID所对应的任务的一次主动调度。 任务超时时间支持自定义任务超时时间任务运行超时将会主动中断任务 失败重试次数支持自定义任务失败重试次数当任务失败时将会按照预设的失败重试次数主动进行重试
3.路由策略(第一个)-案例
执行器部署集群
配置路由规则 任务执行效果第一个执行器执行任务
4.路由策略(最后一个)-案例
执行器部署集群 配置路由规则 任务执行效果最后一个执行器执行任务
5.轮询策略-案例
执行器部署集群 配置路由规则 任务执行效果轮询执行任务(一共执行4次各执行2次)
7.分片广播任务
执行器集群部署时任务路由策略选择”分片广播”情况下一次任务调度将会广播触发对应集群中所有执行器执行一次任务。 内部实现方式如果有n个实例那用任务项ID%n由此来选择实例 需求让两个节点同时执行10000个任务每个节点分别执行5000个任务
创建分片执行器xxl-job-sharding-sample 创建任务路由策略指定为分片广播 分片广播代码
分片参数 index当前分片序号(从0开始)执行器集群列表中当前执行器的序号total总分片数执行器集群的总机器数量
案例实现 配置执行器的名称 创建任务
package com.xxl.job.config;import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;import java.util.ArrayList;
import java.util.List;Component
public class HelloJob1 {XxlJob(shardingJobHandler)public void shardingJobHandler() {//分片的参数//1.当前分片序号(从0开始)执行器集群列表中当前执行器的序号int shardIndex XxlJobHelper.getShardIndex();//2.总分片数执行器集群的总机器数量int shardTotal XxlJobHelper.getShardTotal();//业务逻辑ListInteger list getList();for (Integer integer : list) {if (integer % shardTotal shardIndex) {System.out.println(当前第 shardIndex 分片执行了任务项为 integer);}}}public ListInteger getList() {ListInteger list new ArrayList();for (int i 0; i 10000; i) {list.add(i);}return list;}
} 启动多个实例进行测试