我们有Spring4和Spring Batch 3,我们的应用程序使用CSV文件作为输入文件。目前,我们使用带有parms的CommandLineJobRunner手动从命令行启动作业,包括要处理的文件的名称。
我想在输入文件到达受监控目录时立即开始异步处理作业。我们怎么能这样做?
答案 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.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。