【问题标题】:KStream-KTable join, message orderingKStream-KTable join,消息排序
【发布时间】:2018-10-05 18:47:09
【问题描述】:

假设我在 topicA 上使用相同的键有以下两条消息

  1. message1: (k, A1)(在时间 t=0 收到)
  2. message2: (k, A2)(在时间 t=5 收到)

和拓扑

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)) 是否是阻塞操作当流、表和 k 时是相同的。? (在我的示例中,这意味着 myJoiner(a1, b) 将首先出现在时间 t=100 左右,而 myJoiner(a2,b) 将出现在时间 t=110 左右)。或者它是异步的(这意味着 myJoiner(a2,b) 将首先出现在时间 t=15 左右,而 myJoiner(a1,b) 将在时间 t=100 左右出现)

谢谢, 大卫

【问题讨论】:

    标签: apache-kafka apache-kafka-streams


    【解决方案1】:

    连接是执行“同步”并保证顺序。

    在我的示例中,这意味着 myJoiner(a1, b) 将首先出现在时间 t=100 左右,而 myJoiner(a2,b) 将出现在时间 t=110 左右

    是的,这正是它的执行方式。

    【讨论】:

      猜你喜欢
      • 2018-02-23
      • 2020-10-17
      • 1970-01-01
      • 1970-01-01
      • 2022-09-25
      • 2020-08-11
      • 2020-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多