Я использую 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 запись на тему, только следующий доступный цикл опроса (может получить 2 записи из одной и той же темы подряд)