我正在开发一个Web应用程序,作为要求的一部分,应用程序用户单击UI上可用的按钮,以便幕后spring-batch
应用程序应在15分钟内触发并处理数据。
由于该应用程序是基于Web的,因此用户可以在任何给定时间点同时调用批处理过程。当用户执行单击操作时,UI无需等待批处理状态或响应。
我已经准备好spring-batch
流程,该流程写在
SimpleJobLauncher
,为了解决这个问题,我打算编写一个REST端点来调用spring-batch
,但是不确定如何处理来自UI的多个请求。
我想知道如何将现有的同步批处理过程移植到新应用程序中。
请告知。
答案 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 JobLauncher和Running Jobs from within a Web Container部分对此进行了详细说明。