Orchestration/notification 个处理事件

Orchestration/notification of processing events

我有以下 SCDF 用例。

  1. 我有几百个文件要处理并放入数据库

  2. 生产者将获得一个文件,读取前 N 行并将其发送到源(rabbit mq),然后读取下 N 行并再次发送到源,等等,直到完成。

  3. 消费者将接收这些文件块(来自 rabbit mq),做一些小的扩充,并将其写入数据库(接收器)

  4. 我将有一些流 > 1 运行(例如 4 个)用于这些文件的一些并行处理

我的问题是:SCDF 是否有机制知道何时所有消费者都已完成(因此队列已耗尽),所以我可以知道何时开始其他进程(可能是另一个 stream/task/anything) 需要数据库完全填充才能开始

此类用例更适合 task/batch。请参阅 https://dataflow.spring.io/docs/recipes/batch/sftp-to-jdbc/,其中详细介绍了推荐的架构。您可以使用定义组合任务来 运行 摄取然后是下一个任务。

是的,sink1 是 source1 的唯一消费者。在流式应用程序中,没有“完成”的概念。根据定义,流处理在逻辑上是无限的,流应用程序(源和接收器)被设计为 运行 永远。另一方面,任务是短暂的、有限的过程,当它们完成时就会退出。应用程序逻辑定义任务何时完成。处理文件或文件块是最常见的用例。流可以监视文件系统或远程文件源(如 sftp 或 s3),并在新文件出现时启动任务。任务处理文件并将执行标记为完成。