当输入文件到达时,如何启动批处理作业?

时间:2018-04-23 17:32:38

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

我希望这会有所帮助。

答案 1 :(得分:0)

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

您也可以使用Spring Integration中的FileReadingMessageSource.WatchServiceDirectoryScannerhttps://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。