使用 rest webservice 触发批处理作业

Trigger Batch Job using rest webservice

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

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

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

您的 BatchFileDBUpload class 需要是 RunnableCallable

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

@Autowired
JobLauncher jobLauncher;
@Autowired
Job job;

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