问题描述

- xxl-job服务升级到2.3.0+之后,之前的任务调度无法获取到任务的param参数

异常代码

@XxlJob("syncScopeMeetingVipJob")
public ReturnT < String > syncScopeMeetingVips(String param) {
    long startTime = System.currentTimeMillis();
    log.info(">>> [syncScopeMeetingVipJob] start, param:[{}] <<<", param);
    JobDateVo jobParam = DateUtils.getJobParam(param);
    vipService.syncScopeMeetingVips(jobParam.getStartDate(), jobParam.getEndDate());
    log.info(">>> [syncScopeMeetingVipJob] end, process time/seconds:{} <<<", (System.currentTimeMillis() - startTime) / 1000);
    return ReturnT.SUCCESS;
}
  • 执行任务调度结果打印参数为null

探究原因

  1. 第一种方式,xxl-job 版本为2.3.0之前,通过继承IJobHandler方式获取方法的param参数。

  2. 第二种方式,xxl-job 版本为2.3.0,通过XxlJobHelper.getJobParam() 方式获取参数,版本差异原因导致。

另一个问题,任务调度无限callback重试

2.3.0版本开始,调度、返回方式调整。

解决方法

@XxlJob("syncScopeMeetingVipJob")
public ReturnT < String > syncScopeMeetingVips() {
    String param = XxlJobHelper.getJobParam();
    long startTime = System.currentTimeMillis();
    log.info(">>> [syncScopeMeetingVipJob] start, param:[{}] <<<", param);
    JobDateVo jobParam = DateUtils.getJobParam(param);
    vipService.syncScopeMeetingVips(jobParam.getStartDate(), jobParam.getEndDate());
    log.info(">>> [syncScopeMeetingVipJob] end, process time/seconds:{} <<<", (System.currentTimeMillis() - startTime) / 1000);
    return ReturnT.SUCCESS;
}
  • 通过XxlJobHelper.getJobParam()方式获取任务调度参数

文章作者: 卡芙卡
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 胡桃の智能体
Java 开发问题 xxl-job 中间件
喜欢就支持一下吧