分布式任务调度
# 依赖配置说明
# maven依赖
1、在 “xxx-service.jar” pom.xml 中依赖如下maven
<dependency>
<groupId>com.ith.starter</groupId>
<artifactId>job-ith-boot-starter</artifactId>
</dependency>
2、在“xxx-web.jar” 的 “bootstrap.yml” 里属性“shared-configs”新增配置如下:
spring:
...
cloud:
nacos:
...
config:
shared-configs:
- xxl-job-${spring.profiles.active}.yaml
# 配置文件说明
### 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册;
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
### 执行器通讯TOKEN [选填]:非空时启用;
xxl.job.accessToken=
### 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
xxl.job.executor.appname=xxl-job-executor-sample
### 执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。
xxl.job.executor.address=
### 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
xxl.job.executor.ip=
### 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
xxl.job.executor.port=9999
### 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
### 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
xxl.job.executor.logretentiondays=30
# 新增执行器
# 调度中心配置
登录调度中心服务 进入:“执行器管理”—“新增”
# 新增执行器
注意
AppName: 是微服务的 ${spring.application.name} 配置参数值
名称:可自定义直接填写该微服务中文名
注册方式:选择“自动注册”
然后直接点击保持
# 命名规则
定时任务配置规则要求
1、开发和测试环境统一用 http://192.168.0.203:32053/xxl-job-admin/ 定时任务服务
2、nacos 里“xxl-job-test.yaml” 配置规则说明
- 配置appname 项目名必须字母且小写 后面固定
xxl.job.executor.appname = 【你的项目名】-${spring.profiles.active}-${spring.application.name}
# 示例 : xxl.job.executor.appname = baidi-${spring.profiles.active}-${spring.application.name}
- xxl.job.executor.port 端口由 “9999” 改为 “0”
3、在定时任务服务添加执行器命名规则
“AppName” : baidi-test-ith-service-order(也就是上面第2条第一小节配置的参数对应的value值)
“名称”统一命名格式:【项目名】-【环境】-【服务名】
示例:白帝-测试-订单中心
# 新建调度任务
# 代码中使用说明
# 步骤一:执行器项目中,开发Job方法:
1、任务开发:在Spring Bean实例中,开发Job方法;
2、注解配置:为Job方法添加注解 "@XxlJob(value="自定义jobhandler名称", init = "JobHandler初始化方法", destroy = "JobHandler销毁方法")",注解value值对应的是调度中心新建任务的JobHandler属性的值。
3、执行日志:需要通过 "XxlJobHelper.log" 打印执行日志;
4、任务结果:默认任务结果为 "成功" 状态,不需要主动设置;如有诉求,比如设置任务结果为失败,可以通过 "XxlJobHelper.handleFail/handleSuccess" 自主设置任务结果;
@XxlJob("demoJobHandler")
public void demoJobHandler() throws Exception {
XxlJobHelper.log("XXL-JOB, Hello World.");
}
注意
所有定时任务处理方法 统一写在"xxx-service.jar" 包中
统一包路径命名规则:com.itonghui.xxx.service.job.JobXxxxService.java
在一个服务下 @XxlJob("demoJobHandler") 中的值不能有重复
# 调度中心配置
登录调度中心服务 进入:“任务管理”—“新增”
# 新增任务
注意
执行器: 选择你的任务在哪个服务下的
任务描述:描述清楚该任务是干嘛的
负责人:谁添加的写上自己的名字
Cron:任务执行周期 表达式 可点击右侧图标设置
JobHandler: 就是上面注解 @XxlJob("demoJobHandler") 里的 “demoJobHandler”值
其他默认不要动,直接点击保存
保存后需要在列表操作栏点击启动
# 本地化部署
如需本地化部署,请下载xxl-job本地部署压缩包,下载后解压到本地
下载地址->: xxl-job本地部署.zip
本地新建xxl-job数据库,并执行压缩包内初始化tables_xxl_job.sql文件
修改application.properties配置文件里面数据源连接信息
- cmd打开当前文件所在目录的命令行 执行启动命令 java -jar xxl-job-admin-2.3.0.jar
访问本机IP+配置端口/xxl-job-admin 进行访问