Получите 1 сообщение из каждой темы, на которую вы подписаны в Kafka - KafkaConsumer

avatar
manavchawla
9 августа 2021 в 02:51
81
1
0

Я использую Java Kafka Consumer API для создания KafkaConsumer следующим образом, чтобы подписаться на все темы с этим шаблоном регулярного выражения:

Pattern topicPattern = Pattern.compile("mssql-.*");
KafkaConsumer<String, JsonNode> consumer = new KafkaConsumer<>(props);
consumer.subscribe(topicPattern);

И вот как я получаю записи из руководств:

  while (true) {
  ConsumerRecords<String, JsonNode> records = consumer.poll(Duration.ofMillis(100));
  for (ConsumerRecord<String, JsonNode> record : records)
    System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());

}

Выводит все сообщения из всех тем. Как распечатать только одно сообщение из каждой темы?

Источник

Ответы (1)

avatar
Rohit Yadav
9 августа 2021 в 03:46
0

Вы можете установить потребительскую конфигурацию max.poll.records на 1, по умолчанию это 500

OneCricketeer
9 августа 2021 в 09:41
0

Эта настройка предназначена для всего потребителя. Это не гарантирует 1 запись на тему, только следующий доступный цикл опроса (может получить 2 записи из одной и той же темы подряд)