частности?
Есть spring boot приложение, которое слушает очередь kafka (настроен KafkaListener и containerFactory). Нужно сделать так, чтобы при ошибках подключения к брокеру кафки (ну например брокер упал) консьюмер останавливался и была возможность.обработать такую ошибку.
Пробовал сделать EventListener на NonResponsiveConsumerEvent, но чет не работает (его не вызывает). Пробовал описать KafkaListenerErrorHandler, но он работает на ошибки в процессе обработки сообщения.
Как проверяю:
В bootstrap server указываю адрес (к примеру localhost:9092) на котором гарантировано нет брокера кафки. Стартую приложение, листенер запускается и просто начинает циклически делать попытки подключения к брокеру. При этом в логи просто падают Warning об ошибках подключения к брокеру.
Может какие настройки консьюмера надо установить, чтобы вызывался таки NonResponsiveConsumerEvent?
Сейчас в логе сообщения при недоступности:
Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available.
Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected
Можно по умолчанию листенер выключенным сделать, при старте приложения кафка админом проверять доступен брокер или нет, и если доступен то включать листенер
Вот так еще попробуй @EventListener({NonResponsiveConsumerEvent.class})
А если уже после запуска отвалился брокер? Просто периодически осуществлять проверку в процессе и если что ступать консьюмер? Костыльно как то, хочется получить красивый error handler для таких ситуаций, а чет не нахожу.
Согласен, костыльно. Попробуй второй вариант с анотациец
Попробую так. Но у меня есть в целом event listener на это событие, но объявлен по другому. Щас переделаю на такой вариант
Давай, самому интресно
Обсуждают сегодня