触发Spring Batch作为Web应用程序的一部分

时间:2019-06-30 14:53:00

标签: spring-boot spring-batch

我正在开发一个Web应用程序,作为要求的一部分,应用程序用户单击UI上可用的按钮,以便幕后spring-batch应用程序应在15分钟内触发并处理数据。

由于该应用程序是基于Web的,因此用户可以在任何给定时间点同时调用批处理过程。当用户执行单击操作时,UI无需等待批处理状态或响应。

我已经准备好spring-batch流程,该流程写在 SimpleJobLauncher,为了解决这个问题,我打算编写一个REST端点来调用spring-batch,但是不确定如何处理来自UI的多个请求。

我想知道如何将现有的同步批处理过程移植到新应用程序中。

请告知。

1 个答案:

答案 0 :(得分:0)

默认情况下,SimpleJobLauncher使用同步任务执行器来启动作业。对于您的情况,您需要对作业启动器使用异步TaskExecutor实现。这将确保作业同时启动。这是一个示例:

@Bean
public JobLauncher jobLauncher() {
    SimpleJobLauncher jobLauncher = new SimpleJobLauncher();
    jobLauncher.setJobRepository(jobRepository());
    jobLauncher.setTaskExecutor(new SimpleAsyncTaskExecutor());
    jobLauncher.afterPropertiesSet();
    return jobLauncher;
}

参考文档的Configuring a JobLauncherRunning Jobs from within a Web Container部分对此进行了详细说明。