Quartz 2.3.2 jobDataMap修改无效 不生效问题

public class AclJob extends QuartzJobBean implements StatefulJob

原本的接口 继承QuartzJobBean  实现StatefulJob

这个版本的StatefulJob 已经过期 需要将对应的注释放到新的类上

@PersistJobDataAfterExecution
@DisallowConcurrentExecution

@PersistJobDataAfterExecution 每次执行完后 会持久化jobDataMap中的数据

@DisallowConcurrentExecution 不允许同时并行执行

原本的业务在 job中,继续调用其他service 如下

然后在调用的job业务中 将原来的job删除 新加一个job并设置新的触发时间点 但是其中的jobDataMap部分的数据在下一次 并不会正常的更新触发

即这里的usingJobData设置的值在下一次执行job时 取的仍然是第一次 初始设置的值 以后都是这个初始值  并不会因为重新设置而修改

解决方法:

1. 去掉实现 StatefulJob ,将job改为无状态的job   

statefulJob为有状态的job 执行后jobDataMap会持久化

   如果要排除并发将@DisallowConcurrentExecution  放到自己新加的job类上 但不要加@PersistJobDataAfterExecution

   

@PersistJobDataAfterExecution这个会影响 jobDataMap的取值,导致只取到初始值 第一次设置的

2.直接在job的

executeInternal方法内 将JobDataMap将到 业务的service层里 然后进行对应的key修改才会生效 如下图

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值