【问题标题】:Build a Kafka Stream that returns the list of distinct ids into time interval构建一个 Kafka Stream,将不同 id 的列表返回到时间间隔
【发布时间】:2019-06-28 16:02:13
【问题描述】:

我有一个 kafka 对象事件流:

KStream<String, VehicleEventTO> stream = builder.stream("mytopic", Consumed.with(Serdes.String(), new JsonSerde<>(MyObjectEvent.class)));

每个ObjectEvent 都有一个属性idType(长)。我需要构建一个将不同的idTypes 返回到时间间隔(例如:10 分钟)的流。 有可能,使用 KafkaStream DSL?我没有找到解决方案。

【问题讨论】:

    标签: apache-kafka-streams spring-kafka


    【解决方案1】:

    根据您的用例,您正在寻找窗口聚合。 Kafka 流 DSL 有 TimeWindowedKStream 或 SessionWindowdKStream 应该能够解决您的问题。

    【讨论】:

      【解决方案2】:

      我不太了解KafkaStream的API,但是关于通用流API, 您将有一种方法可以随时间缓冲消息(例如 buffergroupedWithin 或类似的东西),您可以在其中指定时间(和/或最大消息)。

      那么你的流会是这样的:

      KStream stream = builder.stream("mytopic", Consumed.with(Serdes.String(), new JsonSerde<>(MyObjectEvent.class)))
          .map(record -> record.value().getId()) // assuming you get a stream of records, I don't know the KafkaStreams api
          .groupedWithin(Duration.ofMinutes(10)) // <-- pseudocode, search for correct method 
      

      然后你会得到一个包含随着时间推移的 id 的流。

      【讨论】:

        猜你喜欢
        • 2018-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多