假设我在主题A上使用相同的密钥收到以下两条消息
和拓扑
KStream<Integer, A> streamA = builder.stream(topicA);
KTable<Integer, B> tableB = builder.table(topicB);
streamA.leftJoin(tableB, (a, b) -> myJoiner(a,b)).to(topicAB);
我们假设myJoiner(a1, b)
以100个时间单位,而myJoiner(a2, b)
以10个时间单位。消息将以什么顺序出现在topicAB上?
我要弄清的是stream.leftJoin(table,(k,v)-> f(k,v))是否是阻塞操作当stream,table和k时是相同的。? (在我的示例中,这意味着myJoiner(a1,b)将在时间t = 100处首先出现,而myJoiner(a2,b)将在时间t = 110处第二位出现)。还是它是异步的(这意味着myJoiner(a2,b)将在时间t = 15左右第一次出现,而myJoiner(a1,b)在时间t = 100左右第二次出现)
谢谢, 大卫
答案 0 :(得分:0)
执行“同步”连接并保证顺序。
在我的示例中,这意味着myJoiner(a1,b)将在时间t = 100处首先出现,而myJoiner(a2,b)将在时间t = 110处第二次出现
是的,这就是它的执行方式。