我有一个接受参数的工作,x=y
我计划每 10 秒运行一次。我是这样开始的:
final JobExecution previousExecution = jobRepository.getLastJobExecution(jobId, jobParameters);
if (previousExecution != null && previousExecution.getStartTime() != null) {
return jobOperator.startNextInstance(jobId);
} else {
return jobOperator.start(jobId, PropertiesConverter.propertiesToString(jobParametersConverter.getProperties(jobParameters)));
}
我第一次开始工作时,它进入else
子句并成功启动。10 秒后,它进入if
子句并成功启动。然后我手动运行作业(通过 REST API),但这次使用参数x=z
,它也成功运行。然后 10 秒过去了,工作即将重新开始。现在jobRepository.getLastJobExecution
返回正确的x=y
执行,但猜猜 -jobOperator.startNextInstance
不关心你的参数 - 它只接受jobId
. 在它内部加载错误的x=z
实例并x=z
从现在开始运行作业,直到永远每 10 秒运行一次。
我的问题是 - 为什么startNextInstance
不接受 jobParameters?我想为给定的作业参数启动一个 nextInstance,为什么不允许?