ZookeeperService.java 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package com.provectus.kafka.ui.zookeeper;
  2. import com.provectus.kafka.ui.cluster.model.ClustersStorage;
  3. import com.provectus.kafka.ui.cluster.model.KafkaCluster;
  4. import lombok.RequiredArgsConstructor;
  5. import lombok.extern.log4j.Log4j2;
  6. import org.I0Itec.zkclient.ZkClient;
  7. import org.springframework.stereotype.Service;
  8. import java.util.HashMap;
  9. import java.util.Map;
  10. @Service
  11. @RequiredArgsConstructor
  12. @Log4j2
  13. public class ZookeeperService {
  14. private final Map<String, ZkClient> cachedZkClient = new HashMap<>();
  15. public boolean isZookeeperOnline(KafkaCluster kafkaCluster) {
  16. var isConnected = false;
  17. var zkClient = getOrCreateZkClient(kafkaCluster);
  18. log.debug("Start getting Zookeeper metrics for kafkaCluster: {}", kafkaCluster.getName());
  19. if (zkClient != null) {
  20. isConnected = isZkClientConnected(zkClient);
  21. }
  22. return isConnected;
  23. }
  24. private boolean isZkClientConnected(ZkClient zkClient) {
  25. zkClient.getChildren("/brokers/ids");
  26. return true;
  27. }
  28. private ZkClient getOrCreateZkClient (KafkaCluster cluster) {
  29. try {
  30. return cachedZkClient.getOrDefault(cluster.getName(), new ZkClient(cluster.getZookeeper(), 1000));
  31. } catch (Exception e) {
  32. log.error("Error while creating zookeeper client for cluster {}", cluster.getName());
  33. return null;
  34. }
  35. }
  36. }