哪种Kafka消费产品最适合从所有主题分区采样数据?

slhcrj9b  于 2021-06-06  发布在  Kafka
关注(0)|答案(1)|浏览(377)

我想从kafka集群的所有主题中抽取数据样本。kstreams看起来很合适,因为它去掉了很多锅炉板。但是,它似乎不适合在每个流中查询多个主题。
如果我有,比方说,50个主题,具有不同的分区号,那么kstream是一种从每个主题分区消费一些消息的好方法吗?还是我应该写我自己的Kafka小说?

h5qlskok

h5qlskok1#

除非您想使用一些kstreams功能,否则我建议您使用常规的javaconsumerapi。从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());
 }

上面的例子将使用主题 foo 以及 bar 同时,不管每个主题有多少个分区。

相关问题