关于Kafka Streams任务内部并行操作执行逻辑与事件处理顺序的问询
Kafka Streams任务内部并行操作执行逻辑与事件处理顺序的问询
我来给你拆解这两个问题哈:
关于Task 0中process1和process2的执行顺序
首先明确一点:Kafka Streams的每个Task都是单线程执行的,不存在Task内部多线程并行处理的情况。
你这种是同一个源KStream分出两个并行处理分支的场景(代码里先写了process1再写process2),对于每条输入事件,Task会严格按照你代码中定义的拓扑顺序来执行——也就是先把事件传给process1完成所有处理,再传给process2执行对应的逻辑。这个顺序是完全确定的,因为Task单线程的特性,不会出现process2抢在process1前面执行的情况。
关于同一分区内evt1和evt2的处理顺序
这个更明确:Kafka Streams会严格遵循Kafka分区内消息的有序性规则。同一个Task负责处理某个分区的消息,会先把evt1的所有转换流程(包括process1和process2的处理)全部完成,才会读取并处理下一条消息evt2,绝对不会出现“处理evt1到一半就去处理evt2”的交叉情况。
备注:内容来源于stack exchange,提问作者Ayoub Omari
相关产品推荐
相关产品推荐

