查看topic分区消息偏移
This commit is contained in:
@@ -23,6 +23,12 @@ public class TopicPartitionVO {
|
||||
|
||||
private List<String> isr;
|
||||
|
||||
private long beginOffset;
|
||||
|
||||
private long endOffset;
|
||||
|
||||
private long diff;
|
||||
|
||||
public static TopicPartitionVO from(TopicPartitionInfo partitionInfo) {
|
||||
TopicPartitionVO partitionVO = new TopicPartitionVO();
|
||||
partitionVO.setPartition(partitionInfo.partition());
|
||||
|
||||
@@ -7,13 +7,18 @@ import com.xuxd.kafka.console.beans.vo.TopicPartitionVO;
|
||||
import com.xuxd.kafka.console.service.TopicService;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
import kafka.console.TopicConsole;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.kafka.clients.admin.TopicDescription;
|
||||
import org.apache.kafka.common.TopicPartition;
|
||||
import org.apache.kafka.common.TopicPartitionInfo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import scala.Tuple2;
|
||||
@@ -78,7 +83,27 @@ public class TopicServiceImpl implements TopicService {
|
||||
return ResponseData.create().success();
|
||||
}
|
||||
TopicDescription topicDescription = list.get(0);
|
||||
List<TopicPartitionInfo> topicPartitionInfos = topicDescription.partitions();
|
||||
List<TopicPartitionVO> voList = topicPartitionInfos.stream().map(TopicPartitionVO::from).collect(Collectors.toList());
|
||||
List<TopicPartition> partitions = topicPartitionInfos.stream().map(p -> new TopicPartition(topic, p.partition())).collect(Collectors.toList());
|
||||
|
||||
return ResponseData.create().data(topicDescription.partitions().stream().map(p -> TopicPartitionVO.from(p))).success();
|
||||
Tuple2<Map<TopicPartition, Object>, Map<TopicPartition, Object>> mapTuple2 = topicConsole.getTopicOffset(topic, partitions);
|
||||
Map<Integer, Long> beginTable = new HashMap<>(), endTable = new HashMap<>();
|
||||
|
||||
mapTuple2._1().forEach((k, v) -> {
|
||||
beginTable.put(k.partition(), (Long) v);
|
||||
});
|
||||
mapTuple2._2().forEach((k, v) -> {
|
||||
endTable.put(k.partition(), (Long) v);
|
||||
});
|
||||
|
||||
for (TopicPartitionVO partitionVO : voList) {
|
||||
long begin = beginTable.get(partitionVO.getPartition());
|
||||
long end = endTable.get(partitionVO.getPartition());
|
||||
partitionVO.setBeginOffset(begin);
|
||||
partitionVO.setEndOffset(end);
|
||||
partitionVO.setDiff(end - begin);
|
||||
}
|
||||
return ResponseData.create().data(voList).success();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user