我想通过"时间戳"传递到JobLauncher的JobParameters,这样我就可以一天多次运行一个作业。
使用XML我能够做到这一点:
JobParameters jobParameters = new JobParametersBuilder().addLong("time", System.currentTimeMillis()).toJobParameters();
JobExecution execution = jobLauncher.run(job, jobParameters);
现在我在Spring Boot框架中只尝试Java,我不知所措。
使用main的启动类:
@SpringBootApplication
public class SpringBatchAnnotatedApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBatchAnnotatedApplication.class, args);
例如来自开始Job的课程的代码:
@Bean
public Job testJob(JobCompletionNotificationListener listener) {
return jobBuilderFactory.get("testJob")
.preventRestart()
.listener(listener)
.flow(step1())
.end()
.build();
}
么?我在这里使用https://docs.spring.io/spring-batch/4.0.x/reference/html/job.html#configureJob跟踪文档[Java]也许有更好的参考?
答案 0 :(得分:0)
下面应该适合你。我使用相同的配置,它对我来说很好。
JobParameters jobParameters = new JobParametersBuilder()
.addDate("time", new Date())
.toJobParameters();
答案 1 :(得分:0)
对于这个用例,Spring Batch有RunIdIncrementer
的概念。它没有传递时间戳,而是递增作业参数。我建议使用这种方法而不是操作作业参数。您可以在此处的文档中详细了解RunIdIncrementer
:https://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/core/launch/support/RunIdIncrementer.html