我有一个由两个源主题组成的拓扑,该主题由Kafka Streams应用程序中的两个不同处理器读取和处理。一个处理器A读取其相应的主题并创建一个持久的本地存储,该本地存储与拓扑中的另一个处理器B共享。
我的问题是,重启后我需要某种方式来暂停处理器B的处理非常短的时间,并让处理器A在处理器B开始处理之前有时间从其主题读取一些事件以更新其本地存储。
由于两个处理器属于同一个子拓扑,因此我不能在init()中使用Thread.sleep,因为这将导致整个应用程序停顿。
那么在重新启动应用程序之前,从源主题开始读取并开始处理事件时,有没有办法让处理器B在拓扑中等待/停滞的时间很少?
答案 0 :(得分:0)
处理顺序基于记录的时间戳。因此,如果A处理的记录的时间戳小于B处理的记录的时间戳,则将首先处理那些“ A记录”。
明确暂停一侧没有意义,因为这可能违反处理顺序。只需确保输入数据正确加上时间戳,就不必担心手动暂停。