首页 > 解决方案 > 自动触发spring批处理作业

问题描述

是否有任何选项可以自动运行 Spring Batch 作业而无需调度或从其他来源触发它?

我们可以通过调度表达式或main方法运行spring批处理作业(如下所述)。

public static void  runBatch() {
    JobLauncher jobLauncher = (JobLauncher) getApplicationContext().getBean("jobLauncher");

    Job job = get Job details here;
    JobParametersBuilder jobParameters = new JobParametersBuilder();
    // Setting Job Parameter and run job using below
    JobExecution jobExecution = jobLauncher.run(job, jobParameters.toJobParameters());      
}

public static void main(String[] args) {
    runBatch();
}

意味着我们需要手动调用 main 方法或通过其他一些调度程序来触发它。如果没有这个 main 方法或调度器,我们可以自动调用这个批处理吗?或者有没有更好的选择?

  1. Spring 批处理应该自动触发,而无需从任何入口点触发,如守护线程。
  2. 假设一次批处理正在使用弹簧批处理处理数据。运行作业完成后如何自动触发spring批处理作业?

标签: springspring-batch

解决方案


存在许多触发批处理的选项:

  1. 要从另一个调度程序调用批处理,请在此处发出运行参数并触发作业。
  2. 如果它必须自动触发,比如说可能在某个时间间隔,使用fixedDelay调度
  3. 要手动触发,您可以使用 MBean 方法,它可以从 JConsole 触发。
  4. 或者有一个端点来调用runBatch

推荐阅读