Kafka Streams:标点与过程

Kafka Streams: Punctuate vs Process

在流应用程序中的单个任务中,独立执行以下两个方法 运行(这意味着当方法 "process" 正在处理来自上游源的传入消息时,方法 "punctuate" 也可以 运行 基于指定的时间表和 WALL_CLOCK_TIME 作为 PunctuationType 并行?)或者它们是否共享相同的线程所以它是 运行 在给定时间的任何一个,如果如果 process 方法不断从上游源获取消息,那么 punctuate 方法永远不会被调用吗?

另外,请说明标点法中partition id值为-1是什么意思。 punctuate 方法不是特定于任何分区吗?

两种方法都在一个线程中执行。如果有或没有输入数据,将独立调用基于挂钟的 punctuate():在调用 process() 之间,线程检查系统时间并在必要时调用 punctuate()

对于分区信息:是的,标点符号与分区无关。当然,标点符号是特定于任务的,但是,任务可能有多个输入分区(例如,如果它执行 mergejoin),因此不清楚要传递什么分区信息。对于简单,单分区案例的处理方式与多分区案例相同,标点符号与分区分离。