Как закрыть KStream, если все брокеры не доступны - PullRequest
0 голосов
/ 16 января 2019

Я использую Kstreams с приложением SpringBoot. Если Kafka закрыт или недоступен, блокируется только следующее:

Не удалось установить соединение с узлом -1. Брокер не может быть имеется.

Я хочу закрыть приложение или хотя бы зарегистрировать исключение, если такое условие возникает. Есть ли способ сделать то же самое.

Ответы [ 2 ]

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

Я добавил CustomHealthIndicator, который постоянно проверяет соединение, и если он обнаружит, что Kafka недоступен, он выдаст исключение и закроет приложение.

Пример кода здесь:

public class CustomHealthIndicator implements HealthIndicator {
    @Override
    public Health health() {
        return Health.up().withDetail("Status Code", "SUCCESS").build();
    }

    private void doHealthCheck() {
        Properties props = new Properties();
        props.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, localhost:9092);
        AdminClient adminClient =  AdminClient.create(props);
        try {
            DescribeClusterOptions dco = new DescribeClusterOptions();
            dco.timeoutMs(30000);
            adminClient.describeCluster(dco).clusterId().get();
        } catch (Exception e) {
            System.exit(-1);
        } finally {
            adminClient.close();
            adminClient = null;
        }
    }

}
0 голосов
/ 18 января 2019

Вы можете добавить отключение при возникновении такого исключения. Может быть возможно дублирование Кафки Стрим: Изящное отключение

Пожалуйста Проверьте здесь

...