Потребитель Spring Cloud Stream Kafka застрял с длительной работой и большим значением max.poll.interval.ms - PullRequest
0 голосов
/ 07 мая 2020

У нас есть несколько долго выполняемых заданий, которые также были реализованы с помощью Spring Cloud Stream и связывателя Kafka. Проблема, с которой мы сталкиваемся, заключается в том, что значение по умолчанию для max.poll.interval.ms и max.poll.records не подходит для нашего варианта использования, нам нужно установить относительно большое значение для max.poll.interval.ms (несколько часов) и относительно небольшое значение для max.poll.records (например, 1) для согласования с самым продолжительным заданием, которое когда-либо могло быть использовано потребителем. Это решает проблему попадания потребителя на ребалансировку l oop. Однако это вызывает у потребителя некоторые эксплуатационные проблемы. Иногда случается, что потребитель застревает при перезапуске и не принимает никаких сообщений, пока не пройдет max.poll.interval.ms.

Это из-за того, как был реализован опрос потока Spring Cloud? Помогает ли использование потребителя syn c и управление poll() соответствующим образом?

Потребитель регистрирует потерю пульса и сообщение, которое я вижу в журнале Kafka, когда потребитель завис:

GroupCoordinator 11]: Member consumer-3-f46e14b4-5998-4083-b7ec-bed4e3f374eb in group foo has failed, removing it from the group

1 Ответ

1 голос
/ 07 мая 2020

Облачный поток Spring (управляемый сообщениями) не подходит для этого приложения. Лучше бы самому управлять потребителем; закройте его после poll(); обработать задание; создать нового потребителя и зафиксировать смещение и снова poll().

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