У нас есть несколько долго выполняемых заданий, которые также были реализованы с помощью 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