Кафка - Какие есть лучшие альтернативы poll () для прослушивания topi c in Java? - PullRequest
1 голос
/ 28 января 2020

Я пытаюсь создать потребительский клиент в Java. Я понял, что функция poll () устарела. Какие есть альтернативы для прослушивания топи c Кафки?

Мой код:

KafkaConsumer< String, UserSegmentPayload > kc = new KafkaConsumer<>(props2);
kc.subscribe(Collections.singletonList(topicName));
while (true) {
    ConsumerRecords<String, UserSegmentPayload> records = kc.poll(100);
    for (ConsumerRecord<String, UserSegmentPayload> record : records) {
        System.out.printf("offset = %d, key = %s, value = %s\n",
        record.offset(), record.key(), record.value());
    }
}

1 Ответ

3 голосов
/ 28 января 2020

Причина, по которой poll() и poll(long) устарели, заключается в том, что они могут блокироваться бесконечно (даже во втором случае, когда указан тайм-аут). Причина root для такого поведения заключается в том, что первоначальное обновление метаданных в этих методах может блокироваться навсегда (см. здесь ). Вместо этого вы должны использовать poll(Duration) -метод KafkaConsumer. Итак, в вашем коде все, что вам нужно сделать, это заменить kc.poll(100) на kc.poll(Duration.ofMillis(100)).

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