class KafkaBrokerTopicObserver implements IZkChildListener {

  public KafkaBrokerTopicObserver(String brokerClusterName, String zkString, long refreshTimeIntervalInMillis) {
    LOGGER.info("Trying to init KafkaBrokerTopicObserver {} with ZK: {}", brokerClusterName,
        zkString);
    _kakfaClusterName = brokerClusterName;
    _refreshTimeIntervalInMillis = refreshTimeIntervalInMillis;
    _zkClient = new ZkClient(zkString, 30000, 30000, ZKStringSerializer$.MODULE$);
    _zkClient.subscribeChildChanges(KAFKA_TOPICS_PATH, this);
    _zkUtils = ZkUtils.apply(_zkClient, false);
    executorService.scheduleAtFixedRate(new Runnable() {
      @Override
      public void run() {
        tryToRefreshCache();
      }
    }, 0, refreshTimeIntervalInMillis, TimeUnit.MILLISECONDS);
    registerMetric();
  }

  public  KafkaBrokerTopicObserver(String brokerClusterName, String zkString, long refreshTimeIntervalInMillis);

}