1

我相信我在这里遇到了范围界定问题。

项目说明:

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

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

使用当前配置,当 FileReservation 小任务被唤醒时,作业的第二步可能会收到空消息。

如果您取消注释BatchConfiguration中的代码,您会发现当我们有单独的 bean 实例时它可以工作。

非常感谢任何指针。

谢谢!

4

1 回答 1

0

为新文件轮询文件夹不适合批处理作业。因此,使用 Spring Batch 作业(filePollingJob)不是一个好主意 IMO。

非常感谢任何指针。

为新文件轮询文件夹并为每个传入文件运行作业是一个常见的用例,可以使用Spring 集成中的 ajava.nio.file.WatchService或 a来实现。FileInboundChannelAdapter请参阅输入文件到达时如何启动批处理作业?更多细节。

于 2020-04-10T22:15:07.593 回答