使用 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 需要是 Runnable
或 Callable
您可以在控制器中自动装配 JobLauncher 和 Job 并手动触发它们:
@Autowired
JobLauncher jobLauncher;
@Autowired
Job job;
@RequestMapping("...")
public void runJob(){
jobLauncher.run(job, new JobParameters());
}
我的应用程序基于 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 需要是 Runnable
或 Callable
您可以在控制器中自动装配 JobLauncher 和 Job 并手动触发它们:
@Autowired
JobLauncher jobLauncher;
@Autowired
Job job;
@RequestMapping("...")
public void runJob(){
jobLauncher.run(job, new JobParameters());
}