用于事件过滤的 Kafka Consumer API 与 Streams API

Posted

技术标签:

【中文标题】用于事件过滤的 Kafka Consumer API 与 Streams API【英文标题】:Kafka Consumer API vs Streams API for event filtering 【发布时间】:2019-04-18 12:17:14 【问题描述】:

对于这个用例,我应该使用 Kafka Consumer API 还是 Kafka Streams API?我有一个主题,有许多消费者群体正在消费它。该主题包含一种类型的事件,它是一个 JSON 消息,其中隐藏了一个类型字段。一些消息将被一些消费者组消费,而不是被其他消费者组消费,一个消费者组可能根本不会消费很多消息。

我的问题是: 我应该使用消费者 API,然后在每个事件上读取类型字段并根据类型字段删除或处理事件。

或者,我应该使用 Streams API、过滤方法和谓词进行过滤吗?

在我消费一个事件后,计划是处理该事件(数据库删除、更新或其他取决于服务),然后如果出现故障,我将生成一个单独的队列,稍后我将重新处理。

谢谢。

【问题讨论】:

【参考方案1】:

这似乎更多的是见仁见智。我个人会使用 Streams/KSQL,可能是您必须维护的更小的代码。您可以拥有另一个包含已清理数据的中间主题,然后您可以附加连接接收器、其他消费者或其他 Stream 和 KSQL 进程。使用流,您可以在不同的机器上扩展单个应用程序,您可以存储状态、拥有备用副本等等,这将是一个 PITA 自己来完成。

【讨论】:

以上是关于用于事件过滤的 Kafka Consumer API 与 Streams API的主要内容,如果未能解决你的问题,请参考以下文章

Kafka事件路由器:过滤和基于内容的路由,如何?

kafka学习总结017 --- consumer配置参数之max.poll.interval.ms

Kafka Consumer输出过多的DEBUG语句

用strings命令查看kafka-log内容 过滤二进制编码

Kafka offset管理

kafka 安装