【问题标题】:Spring boot batch : How to run job with job parametersSpring Boot批处理:如何使用作业参数运行作业
【发布时间】:2019-11-14 05:42:09
【问题描述】:

我必须在 Spring Batch 上设置 jobparemeters,但使用 Spring Boot Batch 无法轻松做到这一点。

我需要重新运行作业,但如果参数相同,spring-batch 将不会再次运行作业。所以我决定添加一个时间戳作为参数。

【问题讨论】:

  • 您可以在启动时添加时间戳。请参阅我对您的回答的评论。

标签: java spring spring-boot spring-batch


【解决方案1】:

我找到了一种方法并将我的解决方案放在 stackoverflow 上,供那些可能感兴趣的人使用。

首先你需要在你的 application.properties / application.yml 添加这个属性:

spring.batch.job.enabled: false

有了这个属性,spring boot 不会自动运行作业。

接下来,在您的配置文件中,您必须添加一个运行您的作业的 bean,并且您可以在其中放置作业参数:

@Bean
@Autowired
public JobExecution run(Job job, JobLauncher jobLauncher) {
    JobExecution jobExecution = null;
    try {
        JobParameters jobParameters = new JobParametersBuilder()
                .addLong("time", System.currentTimeMillis()).toJobParameters();

        jobExecution = jobLauncher.run(job, jobParameters);
        logger.info("Exit Status : " + jobExecution.getStatus());
    } catch (Exception e) {
        e.printStackTrace();
    }
    return jobExecution;
}

如果你有更好的方法,请告诉我。

【讨论】:

  • 例如java -jar myjob.jar param1=value1 param2=value2 time=$(date) 怎么样?有了这个,你就不需要上面的代码了。
  • 就我而言,我认为它有效。但实施取决于我的操作系统。我会试试的。
  • 当然 $(date) 适用于 unix/linux,但你明白了。您可以使用操作系统的类似命令执行相同的操作,将时间戳作为参数添加到命令中,而无需编写上面的代码。
猜你喜欢
  • 2014-06-20
  • 1970-01-01
  • 1970-01-01
  • 2014-09-28
  • 2020-08-29
  • 2021-01-15
  • 2015-07-30
  • 2021-04-05
  • 1970-01-01
相关资源
最近更新 更多