代码之家  ›  专栏  ›  技术社区  ›  Suchita

如果没有所有经纪人,如何关闭kstream

  •  0
  • Suchita  · 技术社区  · 6 年前

    我正在将kstream与Springboot应用程序一起使用。如果卡夫卡关闭或无法访问,则仅锁定以下内容:

    无法建立到节点-1的连接。经纪人可能不会 可用。

    如果出现这种情况,我希望关闭应用程序或至少记录异常。有什么办法可以做到这一点吗?

    2 回复  |  直到 5 年前
        1
  •  0
  •   suraj_fale    6 年前

    当这种异常发生时,您可以添加关闭挂钩。可能是 Kafka Stream: Graceful shutdown

    拜托 Check here

        2
  •  0
  •   Suchita    5 年前

    我添加了一个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;
            }
        }
    
    }