У меня есть базовая реализация потребителя Kafka. У меня он работает правильно, когда он вызывает метод при нажатии кнопки (назовем это V1).Kafka Consumer poll() возвращает пустой набор при использовании внутри цикла while
Но как только я помещаю метод poll()
внутри while
петли (давайте назовем это V2), прекратить получение сообщений.
Странная вещь, что V1 все еще в состоянии подобрать новые сообщения, но V2 все еще получает пустой ConsumerRecords
объект.
Я убедился, что V1 и V2 находятся в разных ConsumerGroups
.
Здесь V2 содержит код, показанный на рисунке ниже.
И V1 имеет петлю while
удален. В противном случае нет другой отличие.
Может ли кто-нибудь сказать мне, что происходит и почему?
Код Воспроизводится ниже:
btnButton.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent arg0){
while(true) {
ConsumerRecords<String, String> records = consumerGroupObj.consumerObj.poll(100);
// Trying to insert into DefaultTableModel here for an existing jTable
// Some other processing code
}
}
}
Update:
Я заметил, что-то здесь. Возможно, это не метод poll()
. Но прилагается eventHandler. Проверьте обновления, указанные выше.
То, что я заметил, что, пока выходы управления этим mouseClicked()
метод, изменения, внесенные в код внутри не видны в графическом интерфейсе.
Итак, мой новый вопрос: Как сделать потребительский прогон Kafka в бесконечном цикле, который запускается при нажатии кнопки?
Я добавил тайм-аут моего собственного вне таймаута, используемого в 'poll()'. Кроме того, увеличено и уменьшено время ожидания, используемое 'poll()', от 100 мс до 5000 мс. Нет эффекта. Я думаю, что это имеет какое-то отношение к потоку контроля через обработчик событий. – GaidinD