Переглянути джерело

ISSUE-1128: Add respect to cluster's order in ClustersStorage (#1130)

* add respect to cluster's order in ClustersStorage
* minor cleaning
Ilya Kuramshin 3 роки тому
батько
коміт
d674808f3c

+ 1 - 3
kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ClustersMetricsScheduler.java

@@ -1,6 +1,5 @@
 package com.provectus.kafka.ui.service;
 package com.provectus.kafka.ui.service;
 
 
-import java.util.Map;
 import javax.annotation.PostConstruct;
 import javax.annotation.PostConstruct;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.log4j.Log4j2;
 import lombok.extern.log4j.Log4j2;
@@ -24,10 +23,9 @@ public class ClustersMetricsScheduler {
       initialDelayString = "${kafka.update-metrics-rate-millis:30000}"
       initialDelayString = "${kafka.update-metrics-rate-millis:30000}"
   )
   )
   public void updateMetrics() {
   public void updateMetrics() {
-    Flux.fromIterable(clustersStorage.getKafkaClustersMap().entrySet())
+    Flux.fromIterable(clustersStorage.getKafkaClusters())
         .parallel()
         .parallel()
         .runOn(Schedulers.parallel())
         .runOn(Schedulers.parallel())
-        .map(Map.Entry::getValue)
         .flatMap(cluster -> {
         .flatMap(cluster -> {
           log.debug("Start getting metrics for kafkaCluster: {}", cluster.getName());
           log.debug("Start getting metrics for kafkaCluster: {}", cluster.getName());
           return metricsService.updateCache(cluster)
           return metricsService.updateCache(cluster)

+ 6 - 21
kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ClustersStorage.java

@@ -1,33 +1,22 @@
 package com.provectus.kafka.ui.service;
 package com.provectus.kafka.ui.service;
 
 
+import com.google.common.collect.ImmutableMap;
 import com.provectus.kafka.ui.config.ClustersProperties;
 import com.provectus.kafka.ui.config.ClustersProperties;
 import com.provectus.kafka.ui.mapper.ClusterMapper;
 import com.provectus.kafka.ui.mapper.ClusterMapper;
 import com.provectus.kafka.ui.model.KafkaCluster;
 import com.provectus.kafka.ui.model.KafkaCluster;
 import java.util.Collection;
 import java.util.Collection;
-import java.util.Map;
 import java.util.Optional;
 import java.util.Optional;
-import java.util.concurrent.ConcurrentHashMap;
-import javax.annotation.PostConstruct;
-import lombok.RequiredArgsConstructor;
-import org.mapstruct.factory.Mappers;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
 @Component
 @Component
-@RequiredArgsConstructor
 public class ClustersStorage {
 public class ClustersStorage {
 
 
-  private final Map<String, KafkaCluster> kafkaClusters = new ConcurrentHashMap<>();
+  private final ImmutableMap<String, KafkaCluster> kafkaClusters;
 
 
-  private final ClustersProperties clusterProperties;
-
-  private final ClusterMapper clusterMapper = Mappers.getMapper(ClusterMapper.class);
-
-  @PostConstruct
-  public void init() {
-    for (ClustersProperties.Cluster clusterProperties : clusterProperties.getClusters()) {
-      KafkaCluster cluster = clusterMapper.toKafkaCluster(clusterProperties);
-      kafkaClusters.put(clusterProperties.getName(), cluster);
-    }
+  public ClustersStorage(ClustersProperties properties, ClusterMapper mapper) {
+    var builder = ImmutableMap.<String, KafkaCluster>builder();
+    properties.getClusters().forEach(c -> builder.put(c.getName(), mapper.toKafkaCluster(c)));
+    this.kafkaClusters = builder.build();
   }
   }
 
 
   public Collection<KafkaCluster> getKafkaClusters() {
   public Collection<KafkaCluster> getKafkaClusters() {
@@ -37,8 +26,4 @@ public class ClustersStorage {
   public Optional<KafkaCluster> getClusterByName(String clusterName) {
   public Optional<KafkaCluster> getClusterByName(String clusterName) {
     return Optional.ofNullable(kafkaClusters.get(clusterName));
     return Optional.ofNullable(kafkaClusters.get(clusterName));
   }
   }
-
-  public Map<String, KafkaCluster> getKafkaClustersMap() {
-    return kafkaClusters;
-  }
 }
 }