Kafka Streams智能跳过消息

时间:2019-07-29 21:22:54

标签: apache-kafka apache-kafka-streams

我有一个简单的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中,我也许可以做一个自定义邮箱。可能这不是一个纯粹的流媒体需求,但这听起来很简单,以至于其他人应该面对这个需求。

1 个答案:

答案 0 :(得分:1)

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

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

KTable将为股票1产生<stock1, 13>

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

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