使用Kafka Streams进行简单分类

时间:2017-11-06 21:29:37

标签: stream apache-kafka state apache-kafka-streams

我目前正在尝试使用Kafka Streams找到一种直接且高效的方式来对记录进行分类 所有记录至少包含idfailed属性 (id只是一个字符串,failed是布尔值)

这个想法是,在开始时,将所有传入的记录分类为" message"。
一旦其中一个传入的记录设置了失败的字段,这应该是"持久的"在某处,记录应归类为"失败"。

从现在开始,具有相同id的传入记录应归类为"失败"同样,无论是否设置了failed属性。

我正在考虑使用Kafka Streams的内部State Store(连同交互式查询功能)或每次记录进入时都会查询的外部数据库。我认为Kafka的State Store本身听起来像是一个更轻量级的解决方案。

这是一个小概念草图,希望有助于理解这个问题。 enter image description here

有人知道如何以正确的方式解决这个问题吗?

谢谢 祝一切顺利 - 蒂姆

1 个答案:

答案 0 :(得分:3)

你的方法听起来不错。不要以为你需要IQ功能。只需定义自定义Transformer并附加键值存储即可。在处理过程中,如果您收到failed=true的消息,则将ID放入商店。对于每个带有failed=false的传入邮件,您还要检查商店以检查是否存在具有相同ID的先前失败邮件。

要保留失败的消息,您只需将您的流分成两部分(可以使用branch()并将failed条消息写入特殊主题。