简体   繁体   English

如何使用一些过滤器使用来自 Kafka 主题的消息?

[英]How to consume message from Kafka topic using some filter?

I am writing a simple Kafka producer-consumer program in Java, where I have produced data like this:我正在用 Java 编写一个简单的 Kafka 生产者-消费者程序,我在其中生成了如下数据:

  • key:"a" value:"{25,223,465}"键:“a”值:“{25,223,465}”

  • key:"a" value:"{26,323,56}"键:“a”值:“{26,323,56}”

  • key:"a" value:"{62,256,652}"键:“a”值:“{62,256,652}”

  • key:"a" value:"{26,227,42}"键:“a”值:“{26,227,42}”

  • key:"b" value:"{4352,234,65342}"键:“b”值:“{4352,234,65342}”

  • key:"b" value:"{243,22347,434}"键:“b”值:“{243,22347,434}”

I am able to consume the messages using consumer.poll(10000) , But now I want to consume data something like how many a records and how many b records are present in the Kafka topic.我能够消耗使用的消息consumer.poll(10000)但现在我想消费数据像多少a记录,有多少b记录存在卡夫卡话题。

If I relate this to SQL如果我将此与 SQL 相关联

select count(*) from 'mytopic' where key='a'

select count(*) from 'mytopic' where key='b'

Please provide me code in java if possible如果可能,请提供我的 Java 代码

Kafka doesn't work in this way, a consumer just reads from the latest committed offset in a partition (or from the beginning) and sequentially all the messages. Kafka 不是这样工作的,消费者只是从分区中最新提交的偏移量(或从头开始)并按顺序读取所有消息。 What you can do is filtering in your application.您可以做的是在您的应用程序中进行过滤。 For your purpose, instead of writing an application using just consumer API you can use a Kafka Streams API based application that provides you a DSL for doing operating like mapping, filtering, ... really easily.出于您的目的,您可以使用基于 Kafka Streams API 的应用程序,而不是仅使用消费者 API 编写应用程序,该应用程序为您提供用于执行映射、过滤等操作的 DSL ……真的很容易。 More information here:更多信息在这里:

https://kafka.apache.org/documentation/streams/ https://kafka.apache.org/documentation/streams/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM