spring中多线程批处理作业的正确范围

spring中多线程批处理作业的正确范围,spring,spring-batch,spring-batch-tasklet,Spring,Spring Batch,Spring Batch Tasklet,我想我这里有一个范围问题 项目说明: 目标是处理任何传入文件(在磁盘上),包括元数据(存储在SQL数据库中)。为此,我有两个tasklet(FileReservation和FileProcessorTask),它们是总体“worker”作业中的步骤。他们等待事件开始他们的工作。有几个线程处理并发作业。FileReservation小任务使用作业上下文将文件ID发送到FileProcessorTask 一个单独的作业(无限期运行)检查数据库中的新文件元数据记录,并在发现新记录时使用已发布的事件“唤

我想我这里有一个范围问题

项目说明:

目标是处理任何传入文件(在磁盘上),包括元数据(存储在SQL数据库中)。为此,我有两个tasklet(FileReservation和FileProcessorTask),它们是总体“worker”作业中的步骤。他们等待事件开始他们的工作。有几个线程处理并发作业。FileReservation小任务使用作业上下文将文件ID发送到FileProcessorTask

一个单独的作业(无限期运行)检查数据库中的新文件元数据记录,并在发现新记录时使用已发布的事件“唤醒”FileReservationTask小任务

在当前配置下,当FileReservation Tasklet被唤醒时,作业中的第二步可能会收到空消息

如果您在BatchConfiguration中取消对代码的注释,您将看到,当我们有单独的bean实例时,它可以工作

非常感谢您的指点


谢谢

轮询文件夹以查找新文件不适合批处理作业。因此,在我看来,使用Spring批处理作业()不是一个好主意

非常感谢您的指点


轮询文件夹中的新文件并为每个传入文件运行作业是一个常见的用例,可以使用Spring integration中的
java.nio.file.WatchService
FileInboundChannelAdapter
来实现。有关详细信息,请参阅。

轮询文件夹以查找新文件不适合批处理作业。因此,在我看来,使用Spring批处理作业()不是一个好主意

非常感谢您的指点


轮询文件夹中的新文件并为每个传入文件运行作业是一个常见的用例,可以使用Spring integration中的
java.nio.file.WatchService
FileInboundChannelAdapter
来实现。有关更多详细信息,请参阅。

作为spring集成的替代方案,您可以使用“Apache Camel”文件端点拾取文件,然后使用spring批处理。作为spring集成的替代方案,您可以使用“Apache Camel”文件端点拾取文件,然后使用spring批处理文件。