延迟 Kafka 处理器从源主题读取

Delay Kafka processor reading from source topic

我有一个由两个源主题组成的拓扑,它们由 Kafka Streams 应用程序中的两个不同处理器读取和处理。一个处理器 A 读取其相应的主题并创建一个持久的本地存储,该存储与拓扑中的另一个处理器 B 共享。

我的问题是,我需要在重启后以某种方式暂停处理器 B 的处理非常短的时间,并让处理器 A 有时间从其主题中读取一些事件,在处理器 B 启动其本地存储之前更新其本地存储处理中。

因为两个处理器都属于同一个子拓扑,所以我不能在 init() 中使用 Thread.sleep,因为这会导致整个应用程序停止。

那么有没有办法让处理器 B 在拓扑 wait/stall 中在重新启动应用程序时在开始读取源主题并开始处理事件之前停留很短的时间?

处理顺序基于记录时间戳。因此,如果 A 处理的记录的时间戳小于 B 处理的记录的时间戳,则 "A records" 将被优先处理。

明确暂停一侧没有意义,因为它可能违反处理顺序。只要确保您的输入数据有正确的时间戳,您就不必担心手动暂停。