Какой продукт Kafka Consumer лучше всего подходит для выборки данных из всех разделов темы? - PullRequest
0 голосов
/ 06 октября 2018

Я хочу получить данные по всем темам в кластере Kafka.KStreams выглядят хорошо, так как удаляет большую часть плиты котла.Однако это не очень удобно для запроса нескольких тем в потоке.

Если бы у меня было, скажем, 50 тем с разными номерами разделов, был бы KStreams хорошим способом получить какое-то сообщение от каждого раздела темы?Или мне просто написать свой собственный kafkaconsumer?

1 Ответ

0 голосов
/ 06 октября 2018

Если вы не хотите использовать некоторые функциональные возможности KStreams, я бы порекомендовал использовать обычный потребительский API Java.Из официальных документов 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 одновременно, независимо от того, сколькоразделы каждой из этих тем имеют.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...