网站建设还流行吗,如何开展网站建设,阿里云网络服务,做网站伊犁哈萨克自治州提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 文章目录 可视化界面1 新增执行器2.新增任务**执行器**#xff1a;**任务描述**#xff1a;**路由策略**#xff1a;**Cron**#xff1a;cron表达式**运行模式**JobHandl… 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档 文章目录 可视化界面1 新增执行器2.新增任务**执行器****任务描述****路由策略****Cron**cron表达式**运行模式**JobHandler子任务阻塞处理策略任务参数报警邮件负责人 3. BEAN模式任务4.GLUEJava模式任务5.分片广播任务6.任务管理7.任务调度日志1.查看调度日志2.查看执行日志3.终止运行中的任务4.删除执行日志 8 执行失败报警 可视化界面
1 新增执行器 新增执行器时需要填写的信息如下所示 AppName这是用来唯一标识每个执行器集群的应用名称执行器会周期性地以AppName为参数进行自动注册。可通过该配置自动发现注册成功的执行器供任务调度时使用。 名称执行器的名称因为AppName限制字母数字等组成可读性不强名称可以提高执行器的可读性。 排序执行器的排序系统中需要执行器的地方如任务新增将会按照该排序读取可用的执行器列表。 注册方式调度中心获取执行器地址的方式有以下两种 自动注册执行器自动进行执行器注册调度中心通过底层注册表可以动态发现执行器机器地址。 手动录入人工手动录入执行器的地址信息多地址逗号分隔供调度中心使用。 机器地址只有在“注册方式”为“手动录入”时可编辑支持人工维护执行器的地址信息。 注意AppName的取值应该和示例工程的application.properties文件中的xxl.job.executor.appname字段的取值相同注册方式应该选择自动注册。新增完成之后就可以在执行器列表中看到新建的执行器 而我在写入的时候将applcation.properties替换为了bootstrap.yml但内容不变 2.新增任务 执行器
任务绑定的执行器任务触发调度时将会自动发现注册成功的执行器实现任务自动发现功能另一方面也可以方便地进行任务分组。每个任务必须绑定一个执行器可以在“执行器管理”页面进行设置。
任务描述
任务的描述信息便于任务管理。
路由策略
当执行器集群部署时提供丰富的路由策略包括
策略参数值详细含义第一个FIRST固定选择第一个机器最后一个LAST固定选择最后一个机器轮询ROUND依次选择执行随机RANDOM随机选择在线的机器一致性HASHCONSISTENT_HASH每个任务按照Hash算法固定选择某一台机器且所有任务均匀散列在不同机器上最不经常使用LEAST_FREQUENTLY_USED使用频率最低的机器优先被选举最近最久未使用LEAST_RECENTLY_USED最久未使用的机器优先被选举故障转移FAILOVER按照顺序依次进行心跳检测第一个心跳检测成功的机器选定为目标执行器并发起调度忙碌转移BUSYOVER按照顺序依次进行空闲检测第一个空闲检测成功的机器选定为目标执行器并发起调度分片广播SHARDING_BROADCAST广播触发对应集群中所有机器执行一次任务同时系统自动传递分片参数可根据分片参数开发分片任务
Cron
触发任务执行的Cron表达式 cron表达式 运行模式 BEAN模式任务以JobHandler的方式维护在执行器端需要结合 “JobHandler”属性匹配执行器中的任务 GLUE模式(Java)任务以源码方式维护在调度中心该模式的任务实际上是一段继承自IJobHandler的Java类代码并以“groovy”源码的方式维护它在执行器项目中运行可使用Resource/Autowire注入执行器里中的其他服务 GLUE模式(Shell)任务以源码方式维护在调度中心该模式的任务实际上是一段“shell”脚本 GLUE模式(Python)任务以源码方式维护在调度中心该模式的任务实际上是一段“python”脚本 GLUE模式(NodeJS)任务以源码方式维护在调度中心该模式的任务实际上是一段“nodejs”脚本
JobHandler
只有在运行模式为“BEAN模式”时生效对应执行器中新开发的JobHandler类的“JobHandler”注解自定义的value值。
子任务
每个任务都拥有一个唯一的任务ID任务ID可以从任务列表获取当本任务执行结束并且执行成功时将会触发子任务ID所对应的任务的一次主动调度。
阻塞处理策略
调度过于密集执行器来不及处理时的处理策略
失败告警默认调度失败和执行失败时都将会触发失败报警默认会发送报警邮件。失败重试调度失败时除了进行失败告警之外将会自动重试一次注意在执行失败时不会重试而是根据回调返回值判断是否重试。
策略参数值详细含义单机串行默认SERIAL_EXECUTION调度请求进入单机执行器后调度请求进入FIFO队列并以串行方式运行丢弃后续调度DISCARD_LATER调度请求进入单机执行器后发现执行器存在运行的调度任务本次请求将会被丢弃并标记为失败覆盖之前调度COVER_EARLY调度请求进入单机执行器后发现执行器存在运行的调度任务将会终止运行中的调度任务并清空队列然后运行本地调度任务
任务参数
任务执行所需的参数多个参数时用逗号分隔任务执行时将会把多个参数转换成数组传入。
报警邮件
任务调度失败时邮件通知的邮箱地址支持配置多邮箱地址配置多个邮箱地址时用逗号分隔。
负责人
任务的负责人。
3. BEAN模式任务
任务逻辑以JobHandler的形式存在于“执行器”所在项目中如我们刚刚所演示的Hello,World 的入门案例 上述代码有三点需要注意
必须使用XXL-JOB的JobHandler注解第1行指定JobHandler的名称为“demoJobHandler”在调度中心新建任务的JobHandler字段的取值要与此相同。必须继承IJobHandler抽象类第3行并且实现它的execute()方法这是实现任务逻辑的方法。IJobHandler抽象类还有init()方法和destroy()方法这两个方法是空方法在任务实例初始化和销毁时调用任务实现类可以选择性地覆盖这两个方法。
4.GLUEJava模式任务
任务以源码方式维护在调度中心支持通过Web IDE在线更新实时编译和生效因此不需要指定JobHandler。开发流程如下:
Step-1 新建调度任务
参考上文“任务调度属性”对新建的任务进行参数配置运行模式选择“GLUE模式(Java)”如下图所示 调度中心会每隔15分钟调度一次这个任务。 Step-2 开发任务代码
在任务列表中选中指定的GLUEJava任务点击该任务右侧的“GLUE”按钮将会前往GLUE任务的Web IDE界面在该界面支持对任务代码进行开发也可以在IDE中开发完成后复制粘贴到编辑中。版本回溯功能在GLUE任务的Web IDE界面选择右上角下拉框“版本回溯”会列出该GLUE任务的更新历史支持30个版本的版本回溯选择相应版本即可显示该版本代码保存后GLUE代码即回退到对应的历史版本。GLUE任务代码和Web IDE界面如下图所示 5.分片广播任务
执行器集群部署时任务路由策略选择“分片广播”的情况下一次任务调度将会广播触发对应集群中所有执行器执行一次任务同时传递分片参数可以根据分片参数开发分片任务。
“分片广播”以执行器为维度进行分片支持动态扩容执行器集群从而动态增加分片数量协同进行业务处理在进行大数据量业务操作时可显著提升任务处理能力和速度。“分片广播”和普通任务开发流程一致不同之处在于可以获取分片参数通过分片参数进行分片业务处理。开发流程如下
Step-1 开发JobHandler代码
在示例工程的com.example.demo.jobhandler包中新建ShardingJobHandler任务类关键代码如下所示
JobHandler(valueshardingJobHandler)
Service
public class ShardingJobHandler extends IJobHandler {Overridepublic ReturnTString execute(String param) throws Exception {// 分片参数ShardingUtil.ShardingVO shardingVO ShardingUtil.getShardingVo();XxlJobLogger.log(分片参数当前分片序号 {0}, 总分片数 {1}, shardingVO.getIndex(), shardingVO.getTotal());// 业务逻辑for (int i 0; i shardingVO.getTotal(); i) {if (i shardingVO.getIndex()) {XxlJobLogger.log(第 {0} 片, 命中分片开始处理, i);} else {XxlJobLogger.log(第 {0} 片, 忽略, i);}}return SUCCESS;}
}
上述代码的第9行获取分片参数第10行获取分片参数的两个属性
shardingVO.getIndex() 当前分片序号从0开始执行器集群列表中当前执行器的序号。shardingVO.getTotal() 总分片数执行器集群的总机器数量。
Step-2 新建调度任务
参考上文“任务调度属性”对新建的任务进行参数配置运行模式选择“BEAN模式”路由策略选择“分片广播”JobHandler属性填写任务注解JobHandler中定义的值如下图所示 调度中心会每隔15分钟广播调度一次shardingJobHandler任务(因为Corn表达式设置了15分钟执行一次)。 分片广播的路由策略不仅适用于BEAN运行模式而且也适用于GLUEJava运行模式。这项功能适用于以下业务场景
分片任务场景 10个执行器的集群来处理10w条数据每台机器只需要处理1w条数据耗时降低10倍。广播任务场景 广播执行器机器运行shell脚本、广播集群节点进行缓存更新等。
6.任务管理 在任务列表中可以看到每个任务的任务ID、任务描述、运行模式、Cron、负责人和状态等信息。用户可以对任务进行以下几种操作 执行手动触发一次任务调度不影响原有调度规则。 暂停/恢复可对任务进行“暂停”和“恢复”操作。需要注意的是此处的暂停/恢复仅针对任务的后续调度触发行为不会影响到已经触发的调度任务。 日志可以查看任务历史调度日志。在历史调入日志界面可查看每次任务调度的调度结果、执行结果等点击“执行日志”按钮可查看执行器完整日志。 编辑在弹出的“编辑任务”界面更新任务属性后保存即可可以修改设置的任务属性信息。 GLUE该操作仅针对GLUE任务。将会前往GLUE任务的Web IDE界面在该界面支持对任务代码进行开发。 删除删除这个任务。
7.任务调度日志
在XXL-JOB调度中心点击进入“调度日志”页面。
1.查看调度日志
在“调度日志”页面可以查看每次任务调度的调度结果、执行结果等信息
从调度日志可以获取以下信息 调度时间“调度中心”触发本次调度并向“执行器”发送任务执行信号的时间。 调度结果“调度中心”触发本次调度的结果200表示成功500或其他表示失败。 调度备注“调度中心”触发本次调度的日志信息。 执行时间“执行器”中本次任务执行结束后回调的时间。 执行结果“执行器”中本次任务执行的结果200表示成功500或其他表示失败。 执行备注“执行器”中本次任务执行的日志信息。
在示例工程中调度日志位于/data/applogs/xxl-job/xxl-job-demo.log可以在logback.xml文件中进行配置。
2.查看执行日志
点击某行日志右侧的 “执行日志” 按钮可跳转至执行日志界面可以查看业务代码中打印的完整日志如下图
3.终止运行中的任务
这项功能只针对执行中的任务。在任务日志页面点击右侧的“终止任务”按钮将会向本次任务对应的执行器发送任务终止请求将会终止掉本次任务同时会清空掉整个任务执行队列如下图所示
任务终止是通过“interrupt”执行线程的方式实现的将会触发“InterruptedException”异常。因此如果JobHandler内部捕获到该异常并消化掉的话任务终止功能将不起作用。因此, 如果遇到上述任务终止不起作用的情况,需要在JobHandler中针对“InterruptedException”异常进行特殊处理向上抛出。另外在JobHandler中开启子线程时子线程也不可捕获处理“InterruptedException”应该主动向上抛出。
4.删除执行日志
在任务日志页面选择执行器和任务之后点击右侧的“清理”按钮将会出现“日志清理”弹框弹框中支持选择不同类型的日志清理策略选中后点击“确定”按钮即可进行日志清理操作如下图所示
8 执行失败报警
概述 当定时任务执行失败的时候日志会自动记录失败结果并且在cdmtc.xxl-job里面的application.properties中配置了email邮箱时可邮件提醒
效果演示 每一次执行失败均可提醒 开启短信提醒功能需要从邮箱中获取授权码每个邮箱的获取方式可能不同可具体百度qq邮箱为从 设置 按钮中的 账户 然后选择POP3/SMTP 服务点击开启按提示获取授权码即可 获取授权码图示 授权码就是配置文件中的password