哪个 Kafka 消费产品最适合从所有 TopicPartition 中采样数据?



我想从 Kafka 集群上的所有主题中采样数据。KStreams 看起来很合适,因为它去除了很多样板。但是,每个流查询多个主题似乎不太合适。

如果我有 50 个主题,分区号不同,KStreams 是使用来自每个主题分区的一些消息的好方法吗?还是我应该写自己的卡夫卡?

除非你想使用一些KStreams功能,否则我建议使用常规的Java消费者API。 从官方的 Kafka 文档中,在Automatic Offset Committing下查看一个快速而肮脏的示例: https://kafka.apache.org/20/javadoc/index.html?org/apache/kafka/clients/consumer/KafkaConsumer.html

Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("group.id", "test");
props.put("enable.auto.commit", "true");
props.put("auto.commit.interval.ms", "1000");
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
consumer.subscribe(Arrays.asList("foo", "bar"));
while (true) {
ConsumerRecords<String, String> records = consumer.poll(100);
for (ConsumerRecord<String, String> record : records)
System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());
}

上面的示例将同时使用主题foobar,无论每个主题有多少个分区。

最新更新