使用rest webservice触发批处理作业

时间:2016-09-01 07:13:18

标签: java spring angular spring-boot spring-batch

我的应用程序是基于spring boot和angular 2.我从angular 2 UI上传一个excel文件,它将保存在服务器中。我打算读取此文件并使用批处理作业将其保存在DB中。我想使用其余的webservice来触发这项工作,这可能吗?我的目标是触发读取文件的作业,我的服务不应该等待响应。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

是的,您所要做的就是在单独的线程中安排将文件保存到数据库。您可以使用spring-batch或普通的旧ExecutorService。 你的控制器方法看起来像这样:

@RequestMapping(...)
public ResponseEntity<Void> upload(File file) {
    executorService.submit(new BatchFileDBUpload(file));
    return ResponseEntity.accepted().build();
}

您的BatchFileDBUpload课程必须是RunnableCallable

答案 1 :(得分:0)

您可以在控制器中自动装配JobLauncher和Job并手动触发它们:

@Autowired
JobLauncher jobLauncher;
@Autowired
Job job;

@RequestMapping("...")
public void runJob(){
    jobLauncher.run(job, new JobParameters());
}