【问题标题】:Trigger Spring Batch as part of Web Application作为 Web 应用程序的一部分触发 Spring Batch
【发布时间】:2019-11-11 12:40:34
【问题描述】:

我正在开发一个 Web 应用程序,作为要求的一部分,应用程序用户单击 UI 上可用的按钮,以便在幕后 spring-batch 应用程序应该在 15 分钟内触发和处理数据。

由于应用程序是基于 Web 的,用户可以在任何给定时间点同时调用批处理过程。当用户执行点击操作时,UI 不需要等待批处理状态或响应。

我已经准备好spring-batch 进程 SimpleJobLauncher,为了解决这个问题,我计划编写一个 REST 端点来调用 spring-batch,但不确定如何处理来自 UI 的多个请求。

我想知道如何将现有的同步批处理移植到新应用程序。

请指教。

【问题讨论】:

    标签: spring-boot spring-batch


    【解决方案1】:

    默认情况下,SimpleJobLauncher 使用同步任务执行器来启动作业。在您的情况下,您需要在作业启动器中使用异步 TaskExecutor 实现。这将确保作业同时启动。这是一个例子:

    @Bean
    public JobLauncher jobLauncher() {
        SimpleJobLauncher jobLauncher = new SimpleJobLauncher();
        jobLauncher.setJobRepository(jobRepository());
        jobLauncher.setTaskExecutor(new SimpleAsyncTaskExecutor());
        jobLauncher.afterPropertiesSet();
        return jobLauncher;
    }
    

    参考文档的Configuring a JobLauncherRunning Jobs from within a Web Container 部分对此进行了详细说明。

    【讨论】:

    • 感谢您的回复@Mahmoud Ben Hassine。请告诉我如何处理我的服务而不是在调用批处理作业后等待响应。
    • 使用异步任务执行器,作业将由后台线程运行,您的控制器将立即返回 http 响应,而无需等待作业完成。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-15
    • 2019-10-13
    • 2011-10-16
    • 1970-01-01
    • 2012-10-13
    • 1970-01-01
    • 2021-03-28
    相关资源
    最近更新 更多