Stream 会话窗口与Kafka流的行为不符合预期

Stream 会话窗口与Kafka流的行为不符合预期,stream,apache-kafka,apache-kafka-streams,Stream,Apache Kafka,Apache Kafka Streams,我是一个有点新手卡夫卡流工作,但我注意到的是一个行为,我不期待。我已经开发了一个应用程序,它是从6个主题消费。我的目标是通过内部字段对每个主题的活动进行分组(或加入)。这很好。但我的问题是窗口时间,它看起来像是每个周期的结束时间,影响到所有聚集在这段时间内。是否只有一个计时器用于同时进行的所有聚合?。我希望在流获得配置的30秒时退出聚合过程。我认为这是可能的,因为我看到了Windowed windowedRegion变量的数据,windowedRegion.window().start()和wi

我是一个有点新手卡夫卡流工作,但我注意到的是一个行为,我不期待。我已经开发了一个应用程序,它是从6个主题消费。我的目标是通过内部字段对每个主题的活动进行分组(或加入)。这很好。但我的问题是窗口时间,它看起来像是每个周期的结束时间,影响到所有聚集在这段时间内。是否只有一个计时器用于同时进行的所有聚合?。我希望在流获得配置的30秒时退出聚合过程。我认为这是可能的,因为我看到了Windowed windowedRegion变量的数据,windowedRegion.window().start()和windowedRegion.window().end()值在每个流中都是不同的。 这是我的代码:

streamsBuilder
   .stream(topicList, Consumed.with(Serdes.String(), Serdes.String()))
   .groupBy(new MyGroupByKeyValueMapper(), Serialized.with(Serdes.String(), Serdes.String()))
   .windowedBy(SessionWindows.with(windowInactivity).until(windowDuration))
   .aggregate(
      new MyInitializer(),
      new MyAggregator(),
      new MyMerger(),
      Materialized.with(new Serdes.StringSerde(), new PaymentListSerde())
  )
  .mapValues(
    new MyMapper()
  )
  .toStream(new MyKeyValueMapper())
  .to(consolidationTopic,Produced.with(Serdes.String(), Serdes.String()));

我不确定这是否是您要问的,但每个聚合(每个关键会话窗口)确实可能会被更新多次。通常,您不会在“整合”主题的每个窗口中只收到一条消息,以及该会话窗口的最终结果。这里将更详细地解释这一点:

我不确定这是否是您要问的问题,但每个聚合(每个关键会话窗口)确实可能会被更新多次。通常,您不会在“整合”主题的每个窗口中只收到一条消息,以及该会话窗口的最终结果。这里将更详细地解释这一点:

谢谢,非常感谢。这回答了我的问题。谢谢,非常感谢。这回答了我的问题。