Kafka Consumer - продолжать вызывать poll (), пока находится в режиме паузы? - PullRequest
0 голосов
/ 06 февраля 2020

Я прочитал документы по использованию методов паузы и возобновления для потребителя кафки, и они кажутся достаточно простыми для реализации. Однако нужен ли мне другой поток для продолжения вызова метода poll () во время паузы, чтобы удовлетворить требования сердцебиения и не вызывать перебалансировку?

Мой потребитель запускает сценарии SQL после опроса topi c и в зависимости от возвращаемых сообщений, выполнение сценариев может занять больше времени, чем текущий интервал session.timeout.ms (мы увеличили это значение, но продолжительность запуска сценариев может немного отличаться, и независимо от интервала мы его превысим во время). Я также хочу избежать перебалансировки, поскольку безопасное упорядочение и целостность данных важнее, чем пропускная способность и задержка ошибок.

Ответы [ 2 ]

0 голосов
/ 08 февраля 2020

да, вам нужно продолжать вызывать poll() для потребителя, даже если вы приостановите все разделы, или он будет исключен из любой группы потребителей, членом которой он является, и назначенные ему разделы будут переданы другому потребителю. какой поток завершает вызов опроса - это не имеет значения (если только один поток взаимодействует с потребителем за раз)

цитирование из kip-62 :

max.poll.interval.ms. Этот конфиг устанавливает максимальную задержку между клиентскими вызовами poll (). По истечении времени ожидания потребитель перестанет отправлять тактовые импульсы и отправит явный запрос LeaveGroup.

0 голосов
/ 06 февраля 2020

Начиная с версии 0.10.1.0 пульс отправляется через отдельный поток, поэтому приостановка вашего потока процесса не повлияет на поток пульса.

Вы можете проверить это для получения дополнительной информации.

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