Kafka Streams 智能跳过消息

Kafka Streams Intelligently skip messages

我有一个简单的 kafka 2.0.1 流,如 https://kafka.apache.org/documentation/streams/

中所述

将流想象成一系列股票价格。对于每个价格,我都会触发一些 CPU 和 I/O 密集计算。显然价格到达的速度非常高,所以让我们假设以下情况

  1. 一只股票的价格在上午 10 点到达,我安排了一系列计算,据说大约需要 3 分钟才能完成。
  2. 同时有 3 个价格到达 10:01、10:02 和 10:03

Kafka 是否有任何智能方式跳过 10:01、10:02 处的价格更新并直接转到 10:03 处的价格更新(即最新的价格更新股票)?我在 10:01 和 10:02?

处处理更新毫无意义

在 akka 中,我也许可以做一个自定义邮箱。这可能不是纯粹的流式传输要求,但这听起来很简单,其他人应该已经遇到过。

您可以使用 KTable 来存储股票价格的更新状态。它将始终保持最新记录并用新值更新以前的值。如果键“stock1”有 3 条记录且以下记录在给定时间

到达流
<stock1, 10> // at time 10:01
<stock1, 8>  // at time 10:02
<stock1, 13> // at time 10:03

KTable 将为 stock1 生成 <stock1, 13>

Kafka会根据事件时间产生最终的结果。我建议使用 KTable 并始终从流中选择最新记录。

您可以找到有关 KTables 的更多信息:https://docs.confluent.io/current/streams/concepts.html#ktable