Как изящно выключить работающий Kafka Consumer - PullRequest
0 голосов
/ 26 февраля 2019

Мне нужно включить / выключить потребителя Kafka на основе некоторого свойства, управляемого базой данных.Как это может быть достигнуто.

Один из способов, о котором я подумал, это: исключение из потребителя, когда флаг потребителя выключен.и конфигурация фабрики контейнеров определена как

factory.setErrorHandler(new SeekToCurrentErrorHandler());

Но она активно ищет то же сообщение.

есть ли способ отключить сердцебиение и снова включить его по требованию.

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Вы можете stop() и start() контейнер слушателя.

Похоже, вы используете @KafkaListener, поскольку вы используете фабрику контейнеров.

В этом случае

@KafkaListener(id = "foo" ...)

, а затем используйте KafkaListenerEndpointRegistry bean ...

registry.getListenerContainer("foo").stop();
0 голосов
/ 26 февраля 2019

Потребитель имеет несколько API для управления своим состоянием:

  • pause() / resume(): позволяет остановить /возобновить потребление из набора разделов.Потребитель остается подписанным (таким образом, нет перебалансировки), но просто не получает новые записи, пока не будет возобновлено

  • unsubscribe(): Позволяет изменить подписку потребителя, если не подписанк чему-либо, он просто останется подключенным к кластеру.

Если вы «покончили» с потребителем, вы также можете позвонить close() и начатьновый при необходимости

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