1. job添加注解@PersistJobDataAfterExecution @DisallowConcurrentExecution
@PersistJobDataAfterExecution
@DisallowConcurrentExecution
public class FutureMarkJob implements Job{
public void execute(JobExecutionContext context) throws JobExecutionException {
JobDataMap jobDataMap = context.getJobDetail().getJobDataMap();
System.out.println(FastJsonUtil.fastJsonSerialize(jobDataMap)+"--------------------------");
System.out.println(jobDataMap.getString("content")+"--------------------------");
}
}
- @PersistJobDataAfterExecution 表示当正常执行完Job后, JobDataMap中的数据应该被改动, 以被下一次调用时用。
- @PersistJobDataAfterExecution 避免并发造成JobDataMap数据安全问题.
2. 更新后JobDataMap替换jobdetail
JobDetail jobDetail = scheduler.getJobDetail("myJob", "myGroup");
jobDetail.getJobDataMap.put("jobQueue", updatedQueue);
scheduler.addJob(jobDetail, true);
参考
https://stackoverflow.com/questions/2829731/update-an-existing-jobdatamap