Получить из кафки последние смещения для каждого раздела в указанной теме - PullRequest
0 голосов
/ 15 октября 2019

Kafka предоставляет полезный инструмент командной строки kafka.tools.GetOffsetShell, но мне нужна его функциональность в моем приложении.

Я хочу получить все смещения для каждого раздела в указанной теме, например:

bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list kafka:9092 --topic com.group.test.Foo
com.group.test.Foo:0:10
com.group.test.Foo:1:11
com.group.test.Foo:2:10

Но я не хочу запускать процесс bin/kafka-run-class.sh kafka.tools.GetOffsetShell.

Как я могу сделать то же самое, используя kafka api в Java? Нужно ли создавать потребителя и вызывать: KafkaConsumer#position для каждого TopicPartition? Мне нужен более простой способ?

1 Ответ

0 голосов
/ 17 октября 2019

По умолчанию GetOffsetShell возвращает конечное смещение для каждого раздела. Вы можете получить эти смещения программно следующим образом:

......
try (final KafkaConsumer<String, String> consumer = new KafkaConsumer<>(consumerProperties)) {
    consumer.subscribe(Arrays.asList("topicName"));
        Set<TopicPartition> assignment;
        while ((assignment = consumer.assignment()).isEmpty()) {
            consumer.poll(Duration.ofMillis(100));
        }
        consumer.endOffsets(assignment).forEach((tp, offset) -> System.out.println(tp + ": " + offset));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...