【问题标题】:How do I kickoff a batch job when input file arrives?输入文件到达时如何启动批处理作业?
【发布时间】:2018-04-23 17:32:38
【问题描述】:

我们有 Spring4 和 Spring Batch 3,我们的应用程序使用 CSV 文件作为输入文件。目前我们从命令行手动启动作业,使用带有参数的 CommandLineJobRunner,包括要处理的文件的名称。

我想在输入文件到达受监控目录后立即开始异步处理作业。我们该怎么做?

【问题讨论】:

    标签: spring spring-batch spring-batch-job-monitoring


    【解决方案1】:

    您可以使用java.nio.file.WatchService 来监视目录中的文件。 一旦文件出现,您就可以开始(或启动异步处理的作业)实际处理。

    您也可以使用 Spring Integration 中的 FileReadingMessageSource.WatchServiceDirectoryScanner (https://docs.spring.io/spring-integration/reference/html/files.html#watch-service-directory-scanner)

    比较发布说明 Spring Batch https://github.com/spring-projects/spring-batch/releases 在 Spring Integration https://github.com/spring-projects/spring-integration/releases 看来,Spring Integration 的发布频率更高。它还具有更多的功能和集成点。

    在这种情况下,如果您只需要查看目录中的文件,那么引入 Spring Integration 似乎有点过头了。

    【讨论】:

      【解决方案2】:

      我建议使用 Spring Batch 与 Spring Integration 的强大组合。例如,您可以使用 Spring Integration 中的 FileInboundChannelAdapter 来监视目录并在输入文件到达后立即启动 Spring Batch Job。

      这里的 Spring Batch 参考文档中有一个典型用例的代码示例:https://docs.spring.io/spring-batch/4.0.x/reference/html/spring-batch-integration.html#launching-batch-jobs-through-messages

      我希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-09
        • 1970-01-01
        • 2023-03-25
        • 2020-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多