用于事件过滤的 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学习总结017 --- consumer配置参数之max.poll.interval.ms