Приостановка Camel KafkaConsumer - PullRequest
       25

Приостановка Camel KafkaConsumer

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

В моем приложении работает N экземпляров. Количество экземпляров всегда больше, чем количество разделов Kafka. Например, 6 экземпляров группы потребителей, потребляющих 4 раздела Kafka ... так что только 4 экземпляра фактически потребляют в любой точке.

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

1 Ответ

1 голос
/ 28 февраля 2020

Это не верблюд, а вопрос Кафки. Перебалансировка обрабатывается Kafka и запускается всякий раз, когда потребитель явно покидает группу потребителей или умирает (больше не отправляет тактовые импульсы).

Kafka 2.3 представила новую функцию под названием " Stati c Членство ", чтобы избежать перебалансировки только из-за перезапуска потребителя.

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

См. Также эту статью , в которой приведено довольно глубокое описание перебалансирования и его компромиссов между доступностью и отказоустойчивостью.

Редактировать из-за комментариев

Если вы хотите избежать перебалансировки, я думаю, вам придется увеличить как session.timeout.ms (интервал сердцебиения), так и max.poll.interval.ms (обработка Тайм-аут).

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

См. в этом вопросе за разницу между session.timeout.ms и max.poll.interval.ms.

...