【问题标题】:Trigger Batch Job using rest webservice使用 REST Web 服务触发批处理作业
【发布时间】:2016-09-01 07:13:18
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    您的BatchFileDBUpload 类需要是RunnableCallable

    【讨论】:

    • 服务会等到批处理完成还是只是提交批处理作业并返回响应实体。?我的要求是它不应该等待批处理完成。它只需要触发并返回响应。
    • 作业安排后会立即返回,但不会等待作业完成
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-27
      • 2014-09-12
      • 1970-01-01
      相关资源
      最近更新 更多