spring 启动批处理,执行日期卡在错误的值
spring boot batch, execution date stuck with wrong value
我有一个 spring 批处理应用程序 spring 使用以下配置 class 启动:
@Bean
public Job myaJob(JobBuilderFactory jobBuilderFactory,
Step extractAccounts,
Step transformAccounts,
Step writeOutputFile) {
return jobBuilderFactory.get(JOB_NAME)
.incrementer(new RunIdIncrementer())
.flow(extractAccounts)
.next(transformAccounts)
.next(writeOutputFile)
.end()
.build();
}
主要class
@Log4j2
@SpringBootApplication
public class MyApplication implements CommandLineRunner {
@Autowired
JobLauncher jobLauncher;
@Autowired
Job myJob;
public static void main(String[] args) {
SpringApplication.run(MyApplication .class, args);
}
@SneakyThrows
@Override
public void run(String... args) {
JobParameters jobParameters = buildJobParameters();
JobExecution jobExecution = jobLauncher.run(myJob, jobParameters);
}
protected JobParameters buildJobParameters() {
return new JobParametersBuilder().addDate("executionDate", new Date())
.toJobParameters();
}
问题是我每次 运行 应用程序都执行两次批处理,所有步骤都被调用两次,甚至作业被调用两次,但是当我删除 [=13] 的所有代码时=],batch如期正常执行一次,但是参数execution_date卡在去掉代码前最后一次使用的值。
关于如何解决这个问题有什么想法吗?
是的,只需使用
spring.batch.job.enabled=false
在 application.properties 或 application.yml 中,因此作业将执行一次。
我有一个 spring 批处理应用程序 spring 使用以下配置 class 启动:
@Bean
public Job myaJob(JobBuilderFactory jobBuilderFactory,
Step extractAccounts,
Step transformAccounts,
Step writeOutputFile) {
return jobBuilderFactory.get(JOB_NAME)
.incrementer(new RunIdIncrementer())
.flow(extractAccounts)
.next(transformAccounts)
.next(writeOutputFile)
.end()
.build();
}
主要class
@Log4j2
@SpringBootApplication
public class MyApplication implements CommandLineRunner {
@Autowired
JobLauncher jobLauncher;
@Autowired
Job myJob;
public static void main(String[] args) {
SpringApplication.run(MyApplication .class, args);
}
@SneakyThrows
@Override
public void run(String... args) {
JobParameters jobParameters = buildJobParameters();
JobExecution jobExecution = jobLauncher.run(myJob, jobParameters);
}
protected JobParameters buildJobParameters() {
return new JobParametersBuilder().addDate("executionDate", new Date())
.toJobParameters();
}
问题是我每次 运行 应用程序都执行两次批处理,所有步骤都被调用两次,甚至作业被调用两次,但是当我删除 [=13] 的所有代码时=],batch如期正常执行一次,但是参数execution_date卡在去掉代码前最后一次使用的值。 关于如何解决这个问题有什么想法吗?
是的,只需使用
spring.batch.job.enabled=false
在 application.properties 或 application.yml 中,因此作业将执行一次。