一、后端xxl job的配置属性介绍
- enabled : 是否开启执行器,如果为false,调度中心就调用不了后端定时任务
- admin-addresses:调度中心的地址,多个则可以逗号拼接: url1,url2,url3
- access-token: 执行器通讯TOKEN ,必须和xxl-job代码里面的一致
src/main/resources/application.yml 配置文件中 accessToken: --- # xxljob系统配置 xxl: job: # 鉴权token accessToken: xxl-job # 国际化 i18n: zh_CN # 日志清理 logretentiondays: 30 triggerpool: fast: max: 200 slow: max: 100
appname: 执行器AppName, 配置完调度中心可以识别到
port: 执行器端口号,执行器名称可以一致appname: xxl-job-executor,但是如果多个执行器端口号必须区分开来- address: 执行器注册地址,默认自动获取IP
- ip: 执行器IP:默认自动获取IP
- logpath: 日志保存路径
logretentiondays: 日志保存天数
通过配置可以知道,xxl-job 调度中心识别执行器的流程:
开启执行器后,执行器根据admin-addresses 地址和 xxl-job 注册到 调度中心,并绑定执行器名称端口日志等信息
--- # xxl-job 配置
xxl.job:
# 执行器开关
enabled: true
#enabled: false
# 调度中心地址:如调度中心集群部署存在多个地址则用逗号分隔。
admin-addresses: http://localhost:9100/xxl-job-admin
# 执行器通讯TOKEN:非空时启用
access-token: xxl-job
executor:
# 执行器AppName:执行器心跳注册分组依据;为空则关闭自动注册
appname: xxl-job-executor
# 28080 端口 随着主应用端口飘逸 避免集群冲突
port: 2${server.port}
# 执行器注册:默认IP:PORT
address:
# 执行器IP:默认自动获取IP
ip:
# 执行器运行日志文件存储磁盘路径
logpath: ./logs/xxl-job
# 执行器日志文件保存天数:大于3生效
logretentiondays: 30
测试:启动调度中心和后台,将后台注册到调度中心
启动xxx-job调度中心和 后台执行器,
则可以看到注册成功:
二、任务管理
2.1 常用配置:
- 调度配置-调度类型:一般我们默认选择CRON表达式,可以参考文章:cron 定时任务_cron 每月最后一天-CSDN博客
- 任务配置-运行模式:默认BEAN模式,后面代码会演示 分片广播、命令行任务
- 任务配置-JobHandler:对应注解里面标注的名称 @XxlJob("demoJobHandler")
/** * 1、简单任务示例(Bean模式) */ @XxlJob("demoJobHandler") public void demoJobHandler() throws Exception { XxlJobHelper.log("XXL-JOB, Hello World."); for (int i = 0; i < 5; i++) { XxlJobHelper.log("beat at:" + i); } // default success }
高级配置-路由策略:
第一个(First):总是选择注册列表中的第一个执行器执行。 最后一个(Last):总是选择注册列表中的最后一个执行器执行。 轮询(Round):按顺序轮流选择执行器执行,实现简单负载均衡。 随机(Random):随机选择一个执行器执行,增加执行的不确定性。 一致性HASH(Consistent Hash):通过Hash算法稳定地选择执行器,即使执行器数量变化也能保持任务分配的连续性。 最少使用(Least Used)(LFU或类似概念):选择最近最少被使用的执行器,以平衡负载。 最近未使用(Least Recently Used, LRU):选择最久未被使用的执行器执行。 故障转移(Failover):当首选执行器不可用时,自动选择下一个可用的执行器。 忙碌转移(Busyover):不仅考虑故障,还考虑执行器的忙碌状态,避免过载。 分片广播(Sharding Broadcast):所有执行器都执行一次任务,但每个执行器可以处理不同的数据分片,适用于大数据量处理。
高级配置-阻塞处理策略:
单机串行(默认): 描述:任务按调度顺序一个接一个地执行,前一个执行完再执行下一个。 特点:简单,但可能导致任务等待时间长。 丢弃后续调度: 描述:如果执行器正忙,新任务会被丢弃。 特点:防止任务堆积,但可能会丢失任务。 覆盖之前调度: 描述:如果执行器正忙,会中断当前任务,立即执行新任务。 特点:确