背景
由于xxl-job2.2.0版本存在漏洞,所以提出升级
升级参考文档
xxl-job gitee 官方文档:doc/XXL-JOB官方文档.md · 许雪里/xxl-job - Gitee.com
升级内容
- 代码升级:由于我们服务是修改了部分源码进行部署的,所以需要将xxl-job-admin服务的代码进行升级一下同时升级依赖xxl-job-core为2.3.1
- 依赖升级:将原先pom文件中的依赖根据最新xxl-job的依赖比对升级
- 数据升级:2.3.1舍弃了部分字段,增加了部分字段
- 配置升级:2.3.1配置部分修改了
开始升级
代码部分就不详细说了,主要是数据库和升级的功能
一、升级数据库
ALTER TABLE `xxl_job_info`
ADD COLUMN `schedule_type` varchar(50) NOT NULL DEFAULT 'NONE' COMMENT '调度类型' AFTER `alarm_email`,
ADD COLUMN `schedule_conf` varchar(128) DEFAULT NULL COMMENT '调度配置,值含义取决于调度类型' AFTER `schedule_type`,
ADD COLUMN `misfire_strategy` varchar(50) NOT NULL DEFAULT 'DO_NOTHING' COMMENT '调度过期策略' AFTER `executor_route_strategy`;
ALTER TABLE `xxl_job_log_report`
ADD COLUMN `update_time` datetime DEFAULT NULL COMMENT '更新时间' AFTER `fail_count`;
ALTER TABLE `xxl_job_group`
ADD COLUMN `update_time` datetime DEFAULT NULL COMMENT '更新时间' AFTER `address_list`;
UPDATE `xxl_job_info`
SET `schedule_conf` = `job_cron`;
UPDATE `xxl_job_info`SET `schedule_type` = 'CRON';
ALTER TABLE `xxl_job_info`
MODIFY COLUMN `job_cron` varchar(128) DEFAULT '' COMMENT '任务执行CRON';
二、配置升级
【优化】邮箱告警配置优化:将"spring.mail.from"与"spring.mail.username"属性拆分开,更加灵活的支持一些无密码邮箱服务;
升级中遇到的问题
一、DataTables warning: table id=job_list - Requested unknown parameter 'jobCron' for row 0, column 5. For more information about this error, please see http://datatables.net/tn/4
这个问题大概率是js缓存问题,可以刷新缓存之后从新加载
二、没有返回结果和日志加载不出来
这个问题大概率是注册服务没有升级xxl-job-core的版本,但是不会影响任务执行。
三、api改变
在升级之后,有些api不能使用,这个问题可以参考xxl-job更新日志
- 3、【新增】新增任务辅助工具 "XxlJobHelper":提供统一任务辅助能力,包括:任务上下文信息维护获取(任务参数、任务ID、分片参数)、日志输出、任务结果设置……等;
- 3.1、"ShardingUtil" 组件废弃:改用 "XxlJobHelper.getShardIndex()/getShardTotal();" 获取分片参数;
- 3.2、"XxlJobLogger" 组件废弃:改用 "XxlJobHelper.log" 进行日志输出;
- 4、【优化】任务核心类 "IJobHandler" 的 "execute" 方法取消出入参设计。改为通过 "XxlJobHelper.getJobParam" 获取任务参数并替代方法入参,通过 "XxlJobHelper.handleSuccess/handleFail" 设置任务结果并替代方法出参,示例代码如下;
@XxlJob("demoJobHandler") public void execute() { String param = XxlJobHelper.getJobParam(); // 获取参数 XxlJobHelper.handleSuccess(); // 设置任务结果 }