增加分区

This commit is contained in:
许晓东
2021-10-18 20:53:25 +08:00
parent f18e857d3c
commit 0f4663d58f
8 changed files with 234 additions and 4 deletions

View File

@@ -2,6 +2,9 @@ package com.xuxd.kafka.console.service;
import com.xuxd.kafka.console.beans.ResponseData;
import com.xuxd.kafka.console.beans.enums.TopicType;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import org.apache.kafka.clients.admin.NewTopic;
/**
@@ -21,4 +24,6 @@ public interface TopicService {
ResponseData getTopicPartitionInfo(String topic);
ResponseData createTopic(NewTopic topic);
ResponseData addPartitions(String topic, int addNum, List<List<Integer>> newAssignmentst);
}

View File

@@ -16,6 +16,7 @@ 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.NewPartitions;
import org.apache.kafka.clients.admin.NewTopic;
import org.apache.kafka.clients.admin.TopicDescription;
import org.apache.kafka.common.TopicPartition;
@@ -112,4 +113,21 @@ public class TopicServiceImpl implements TopicService {
Tuple2<Object, String> createResult = topicConsole.createTopic(topic);
return (boolean) createResult._1 ? ResponseData.create().success() : ResponseData.create().failed(String.valueOf(createResult._2));
}
@Override public ResponseData addPartitions(String topic, int addNum, List<List<Integer>> newAssignments) {
List<TopicDescription> list = topicConsole.getTopicList(Collections.singleton(topic));
if (list.isEmpty()) {
return ResponseData.create().failed("topic not exist.");
}
TopicDescription topicDescription = list.get(0);
Map<String, NewPartitions> param = new HashMap<>();
param.put(topic, (newAssignments.size() > 0 ? NewPartitions.increaseTo(topicDescription.partitions().size() + addNum, newAssignments) :
NewPartitions.increaseTo(topicDescription.partitions().size() + addNum)));
Tuple2<Object, String> tuple2 = topicConsole.createPartitions(param);
boolean success = (boolean) tuple2._1();
return success ? ResponseData.create().success() : ResponseData.create().failed(tuple2._2());
}
}