|
@@ -9,15 +9,18 @@ import com.provectus.kafka.ui.kafka.KafkaService;
|
|
import com.provectus.kafka.ui.model.*;
|
|
import com.provectus.kafka.ui.model.*;
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.SneakyThrows;
|
|
import lombok.SneakyThrows;
|
|
|
|
+import org.apache.commons.lang3.tuple.Pair;
|
|
import org.apache.kafka.clients.consumer.ConsumerConfig;
|
|
import org.apache.kafka.clients.consumer.ConsumerConfig;
|
|
import org.apache.kafka.clients.consumer.KafkaConsumer;
|
|
import org.apache.kafka.clients.consumer.KafkaConsumer;
|
|
import org.apache.kafka.clients.consumer.OffsetAndMetadata;
|
|
import org.apache.kafka.clients.consumer.OffsetAndMetadata;
|
|
import org.apache.kafka.common.TopicPartition;
|
|
import org.apache.kafka.common.TopicPartition;
|
|
|
|
+import org.apache.kafka.common.TopicPartitionInfo;
|
|
import org.apache.kafka.common.serialization.StringDeserializer;
|
|
import org.apache.kafka.common.serialization.StringDeserializer;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import reactor.core.publisher.Flux;
|
|
import reactor.core.publisher.Flux;
|
|
import reactor.core.publisher.Mono;
|
|
import reactor.core.publisher.Mono;
|
|
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Stream;
|
|
import java.util.stream.Stream;
|
|
@@ -153,4 +156,10 @@ public class ClusterService {
|
|
.orElse(Flux.empty());
|
|
.orElse(Flux.empty());
|
|
|
|
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ public Mono<Map<String, BigDecimal>> getOffsets(String clusterName) {
|
|
|
|
+ return clustersStorage.getClusterByName(clusterName)
|
|
|
|
+ .map(c -> kafkaService.getOrCreateAdminClient(c)
|
|
|
|
+ .flatMap(a -> kafkaService.getOffsets(a.getAdminClient(), c))).orElseThrow();
|
|
|
|
+ }
|
|
}
|
|
}
|