【发布时间】:2015-12-08 15:01:56
【问题描述】:
块引用
我在 Spring Batch 中遇到了 jobParameters 的问题。我有一个可选的 jobParameter。当我第一次通过 commandLineJobRunner 传递作业参数时它正在工作。第二次我没有传递任何 jobParameter 但仍然它正在使用以前的作业参数。当我清除我的元数据时,作业参数将作为空值出现,我没有通过。如何在不清除元数据的情况下解决这个问题。这在春季批处理中是否正常发生
修改后的代码
我正在使用 MapJobRegistry 并在启动作业时使用下一个。当我调试时,我观察到增加 run.id 它正在加载所有以前的参数
public JobParameters More ...getNext(JobParameters parameters) {
if (parameters == null) {
parameters = new JobParameters();
}
long id = parameters.getLong(key, 0L) + 1;
return new JobParametersBuilder(parameters).addLong(key, id).toJobParameters();
}
【问题讨论】:
-
您是否在使用 SpringBoot,您的作业是否通过 'org.springframework.boot.autoconfigure.batch.JobLauncherCommandLineRunner' 执行?
-
不,我正在通过 commandLineJobRunner 启动我的工作。我没有使用 spring boot @HansjoergWingeier
-
您使用的是 JdbcJobRegistery 还是 MapJobRegistery?启动时是否使用“下一个”或“重新启动”选项?我认为对你来说最好的办法是在 CommandLineJobRunner.start 中设置一个断点并检查你的 JobParameters 更改的时间和原因。
标签: java spring spring-batch