mirror of
https://github.com/didi/KnowStreaming.git
synced 2026-01-04 03:42:08 +08:00
增加Topic同步任务&Bug修复
This commit is contained in:
@@ -6,8 +6,6 @@ package com.xiaojukeji.kafka.manager.common.bizenum;
|
||||
*/
|
||||
public enum IDCEnum {
|
||||
CN("cn", "国内"),
|
||||
US("us", "美东"),
|
||||
RU("ru", "俄罗斯"),
|
||||
;
|
||||
|
||||
private String idc;
|
||||
|
||||
@@ -21,6 +21,8 @@ public enum ModuleEnum {
|
||||
|
||||
PARTITION(5, "分区"),
|
||||
|
||||
GATEWAY_CONFIG(6, "Gateway配置"),
|
||||
|
||||
UNKNOWN(-1, "未知")
|
||||
;
|
||||
ModuleEnum(int code, String message) {
|
||||
|
||||
@@ -10,6 +10,7 @@ public enum RebalanceDimensionEnum {
|
||||
REGION(1, "Region维度"),
|
||||
BROKER(2, "Broker维度"),
|
||||
TOPIC(3, "Topic维度"),
|
||||
PARTITION(4, "Partition维度"),
|
||||
;
|
||||
|
||||
private Integer code;
|
||||
|
||||
@@ -45,4 +45,13 @@ public enum GatewayConfigKeyEnum {
|
||||
", configName='" + configName + '\'' +
|
||||
'}';
|
||||
}
|
||||
|
||||
public static GatewayConfigKeyEnum getByConfigType(String configType) {
|
||||
for (GatewayConfigKeyEnum configKeyEnum: GatewayConfigKeyEnum.values()) {
|
||||
if (configKeyEnum.getConfigType().equals(configType)) {
|
||||
return configKeyEnum;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,8 @@ package com.xiaojukeji.kafka.manager.common.constant;
|
||||
public class KafkaConstant {
|
||||
public static final String COORDINATOR_TOPIC_NAME = "__consumer_offsets";
|
||||
|
||||
public static final String TRANSACTION_TOPIC_NAME = "__transaction_state";
|
||||
|
||||
public static final String BROKER_HOST_NAME_SUFFIX = ".diditaxi.com";
|
||||
|
||||
public static final String CLIENT_VERSION_CODE_UNKNOWN = "-1";
|
||||
|
||||
@@ -12,11 +12,6 @@ public class TopicCreationConstant {
|
||||
*/
|
||||
public static final String LOG_X_CREATE_TOPIC_CONFIG_KEY_NAME = "LOG_X_CREATE_TOPIC_CONFIG";
|
||||
|
||||
/**
|
||||
* 治理平台创建Topic配置KEY
|
||||
*/
|
||||
public static final String CHORUS_CREATE_TOPIC_CONFIG_KEY_NAME = "CHORUS_CREATE_TOPIC_CONFIG";
|
||||
|
||||
/**
|
||||
* 内部创建Topic配置KEY
|
||||
*/
|
||||
@@ -30,6 +25,8 @@ public class TopicCreationConstant {
|
||||
|
||||
public static final String TOPIC_RETENTION_TIME_KEY_NAME = "retention.ms";
|
||||
|
||||
public static final Long DEFAULT_QUOTA = 3 * 1024 * 1024L;
|
||||
|
||||
public static Properties createNewProperties(Long retentionTime) {
|
||||
Properties properties = new Properties();
|
||||
properties.put(TOPIC_RETENTION_TIME_KEY_NAME, String.valueOf(retentionTime));
|
||||
|
||||
@@ -3,7 +3,6 @@ package com.xiaojukeji.kafka.manager.common.entity;
|
||||
import kafka.admin.AdminClient;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
@@ -16,17 +15,12 @@ public class ConsumerMetadata {
|
||||
|
||||
private Map<String, AdminClient.ConsumerGroupSummary> consumerGroupSummaryMap = new HashMap<>();
|
||||
|
||||
private Map<String, List<String>> consumerGroupAppMap = new ConcurrentHashMap<>();
|
||||
|
||||
|
||||
public ConsumerMetadata(Set<String> consumerGroupSet,
|
||||
Map<String, Set<String>> topicNameConsumerGroupMap,
|
||||
Map<String, AdminClient.ConsumerGroupSummary> consumerGroupSummaryMap,
|
||||
Map<String, List<String>> consumerGroupAppMap) {
|
||||
Map<String, AdminClient.ConsumerGroupSummary> consumerGroupSummaryMap) {
|
||||
this.consumerGroupSet = consumerGroupSet;
|
||||
this.topicNameConsumerGroupMap = topicNameConsumerGroupMap;
|
||||
this.consumerGroupSummaryMap = consumerGroupSummaryMap;
|
||||
this.consumerGroupAppMap = consumerGroupAppMap;
|
||||
}
|
||||
|
||||
public Set<String> getConsumerGroupSet() {
|
||||
@@ -40,8 +34,4 @@ public class ConsumerMetadata {
|
||||
public Map<String, AdminClient.ConsumerGroupSummary> getConsumerGroupSummaryMap() {
|
||||
return consumerGroupSummaryMap;
|
||||
}
|
||||
|
||||
public Map<String, List<String>> getConsumerGroupAppMap() {
|
||||
return consumerGroupAppMap;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.xiaojukeji.kafka.manager.common.entity;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.xiaojukeji.kafka.manager.common.constant.Constant;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@@ -118,4 +119,9 @@ public class Result<T> implements Serializable {
|
||||
result.setData(data);
|
||||
return result;
|
||||
}
|
||||
|
||||
public boolean failed() {
|
||||
return !Constant.SUCCESS.equals(code);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
package com.xiaojukeji.kafka.manager.common.entity.ao.cluster;
|
||||
|
||||
public class ControllerPreferredCandidate {
|
||||
private Integer brokerId;
|
||||
|
||||
private String host;
|
||||
|
||||
private Long startTime;
|
||||
|
||||
private Integer status;
|
||||
|
||||
public Integer getBrokerId() {
|
||||
return brokerId;
|
||||
}
|
||||
|
||||
public void setBrokerId(Integer brokerId) {
|
||||
this.brokerId = brokerId;
|
||||
}
|
||||
|
||||
public String getHost() {
|
||||
return host;
|
||||
}
|
||||
|
||||
public void setHost(String host) {
|
||||
this.host = host;
|
||||
}
|
||||
|
||||
public Long getStartTime() {
|
||||
return startTime;
|
||||
}
|
||||
|
||||
public void setStartTime(Long startTime) {
|
||||
this.startTime = startTime;
|
||||
}
|
||||
|
||||
public Integer getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(Integer status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ControllerPreferredBroker{" +
|
||||
"brokerId=" + brokerId +
|
||||
", host='" + host + '\'' +
|
||||
", startTime=" + startTime +
|
||||
", status=" + status +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
@@ -2,30 +2,18 @@ package com.xiaojukeji.kafka.manager.common.entity.ao.consumer;
|
||||
|
||||
import com.xiaojukeji.kafka.manager.common.bizenum.OffsetLocationEnum;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 消费组信息
|
||||
* @author zengqiao
|
||||
* @date 19/4/18
|
||||
*/
|
||||
public class ConsumerGroupDTO {
|
||||
public class ConsumerGroup {
|
||||
private Long clusterId;
|
||||
|
||||
private String consumerGroup;
|
||||
|
||||
private List<String> appIdList;
|
||||
|
||||
private OffsetLocationEnum offsetStoreLocation;
|
||||
|
||||
public ConsumerGroupDTO(Long clusterId,
|
||||
String consumerGroup,
|
||||
List<String> appIdList,
|
||||
OffsetLocationEnum offsetStoreLocation) {
|
||||
public ConsumerGroup(Long clusterId, String consumerGroup, OffsetLocationEnum offsetStoreLocation) {
|
||||
this.clusterId = clusterId;
|
||||
this.consumerGroup = consumerGroup;
|
||||
this.appIdList = appIdList;
|
||||
this.offsetStoreLocation = offsetStoreLocation;
|
||||
}
|
||||
|
||||
@@ -45,14 +33,6 @@ public class ConsumerGroupDTO {
|
||||
this.consumerGroup = consumerGroup;
|
||||
}
|
||||
|
||||
public List<String> getAppIdList() {
|
||||
return appIdList;
|
||||
}
|
||||
|
||||
public void setAppIdList(List<String> appIdList) {
|
||||
this.appIdList = appIdList;
|
||||
}
|
||||
|
||||
public OffsetLocationEnum getOffsetStoreLocation() {
|
||||
return offsetStoreLocation;
|
||||
}
|
||||
@@ -63,10 +43,9 @@ public class ConsumerGroupDTO {
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ConsumerGroupDTO{" +
|
||||
return "ConsumerGroup{" +
|
||||
"clusterId=" + clusterId +
|
||||
", consumerGroup='" + consumerGroup + '\'' +
|
||||
", appIdList=" + appIdList +
|
||||
", offsetStoreLocation=" + offsetStoreLocation +
|
||||
'}';
|
||||
}
|
||||
@@ -79,7 +58,7 @@ public class ConsumerGroupDTO {
|
||||
if (o == null || getClass() != o.getClass()) {
|
||||
return false;
|
||||
}
|
||||
ConsumerGroupDTO that = (ConsumerGroupDTO) o;
|
||||
ConsumerGroup that = (ConsumerGroup) o;
|
||||
return clusterId.equals(that.clusterId)
|
||||
&& consumerGroup.equals(that.consumerGroup)
|
||||
&& offsetStoreLocation == that.offsetStoreLocation;
|
||||
@@ -0,0 +1,68 @@
|
||||
package com.xiaojukeji.kafka.manager.common.entity.ao.consumer;
|
||||
|
||||
import com.xiaojukeji.kafka.manager.common.bizenum.OffsetLocationEnum;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ConsumerGroupSummary {
|
||||
private Long clusterId;
|
||||
|
||||
private String consumerGroup;
|
||||
|
||||
private OffsetLocationEnum offsetStoreLocation;
|
||||
|
||||
private List<String> appIdList;
|
||||
|
||||
private String state;
|
||||
|
||||
public Long getClusterId() {
|
||||
return clusterId;
|
||||
}
|
||||
|
||||
public void setClusterId(Long clusterId) {
|
||||
this.clusterId = clusterId;
|
||||
}
|
||||
|
||||
public String getConsumerGroup() {
|
||||
return consumerGroup;
|
||||
}
|
||||
|
||||
public void setConsumerGroup(String consumerGroup) {
|
||||
this.consumerGroup = consumerGroup;
|
||||
}
|
||||
|
||||
public OffsetLocationEnum getOffsetStoreLocation() {
|
||||
return offsetStoreLocation;
|
||||
}
|
||||
|
||||
public void setOffsetStoreLocation(OffsetLocationEnum offsetStoreLocation) {
|
||||
this.offsetStoreLocation = offsetStoreLocation;
|
||||
}
|
||||
|
||||
public List<String> getAppIdList() {
|
||||
return appIdList;
|
||||
}
|
||||
|
||||
public void setAppIdList(List<String> appIdList) {
|
||||
this.appIdList = appIdList;
|
||||
}
|
||||
|
||||
public String getState() {
|
||||
return state;
|
||||
}
|
||||
|
||||
public void setState(String state) {
|
||||
this.state = state;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ConsumerGroupSummary{" +
|
||||
"clusterId=" + clusterId +
|
||||
", consumerGroup='" + consumerGroup + '\'' +
|
||||
", offsetStoreLocation=" + offsetStoreLocation +
|
||||
", appIdList=" + appIdList +
|
||||
", state='" + state + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
@@ -25,7 +25,10 @@ public class RebalanceDTO {
|
||||
@ApiModelProperty(value = "TopicName")
|
||||
private String topicName;
|
||||
|
||||
@ApiModelProperty(value = "维度[0: Cluster维度, 1: Region维度, 2:Broker维度, 3:Topic维度]")
|
||||
@ApiModelProperty(value = "分区ID")
|
||||
private Integer partitionId;
|
||||
|
||||
@ApiModelProperty(value = "维度[0: Cluster维度, 1: Region维度, 2:Broker维度, 3:Topic维度, 4:Partition纬度]")
|
||||
private Integer dimension;
|
||||
|
||||
public Long getClusterId() {
|
||||
@@ -60,6 +63,14 @@ public class RebalanceDTO {
|
||||
this.topicName = topicName;
|
||||
}
|
||||
|
||||
public Integer getPartitionId() {
|
||||
return partitionId;
|
||||
}
|
||||
|
||||
public void setPartitionId(Integer partitionId) {
|
||||
this.partitionId = partitionId;
|
||||
}
|
||||
|
||||
public Integer getDimension() {
|
||||
return dimension;
|
||||
}
|
||||
@@ -68,22 +79,12 @@ public class RebalanceDTO {
|
||||
this.dimension = dimension;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "RebalanceDTO{" +
|
||||
"clusterId=" + clusterId +
|
||||
", regionId=" + regionId +
|
||||
", brokerId=" + brokerId +
|
||||
", topicName='" + topicName + '\'' +
|
||||
", dimension=" + dimension +
|
||||
'}';
|
||||
}
|
||||
|
||||
public boolean paramLegal() {
|
||||
if (ValidateUtils.isNull(clusterId)
|
||||
|| RebalanceDimensionEnum.REGION.getCode().equals(dimension) && ValidateUtils.isNull(regionId)
|
||||
|| RebalanceDimensionEnum.BROKER.getCode().equals(dimension) && ValidateUtils.isNull(brokerId)
|
||||
|| RebalanceDimensionEnum.TOPIC.getCode().equals(dimension) && ValidateUtils.isNull(topicName) ) {
|
||||
|| (RebalanceDimensionEnum.REGION.getCode().equals(dimension) && ValidateUtils.isNull(regionId))
|
||||
|| (RebalanceDimensionEnum.BROKER.getCode().equals(dimension) && ValidateUtils.isNull(brokerId))
|
||||
|| (RebalanceDimensionEnum.TOPIC.getCode().equals(dimension) && ValidateUtils.isNull(topicName))
|
||||
|| (RebalanceDimensionEnum.PARTITION.getCode().equals(dimension) && (ValidateUtils.isNull(topicName) || ValidateUtils.isNull(partitionId))) ) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
package com.xiaojukeji.kafka.manager.common.entity.vo.normal.consumer;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 21/01/14
|
||||
*/
|
||||
@ApiModel(value = "Topic消费组概要信息")
|
||||
public class ConsumerGroupSummaryVO {
|
||||
@ApiModelProperty(value = "消费组名称")
|
||||
private String consumerGroup;
|
||||
|
||||
@ApiModelProperty(value = "使用的AppID")
|
||||
private String appIds;
|
||||
|
||||
@ApiModelProperty(value = "offset存储位置")
|
||||
private String location;
|
||||
|
||||
@ApiModelProperty(value = "消费组状态")
|
||||
private String state;
|
||||
|
||||
public String getConsumerGroup() {
|
||||
return consumerGroup;
|
||||
}
|
||||
|
||||
public void setConsumerGroup(String consumerGroup) {
|
||||
this.consumerGroup = consumerGroup;
|
||||
}
|
||||
|
||||
public String getAppIds() {
|
||||
return appIds;
|
||||
}
|
||||
|
||||
public void setAppIds(String appIds) {
|
||||
this.appIds = appIds;
|
||||
}
|
||||
|
||||
public String getLocation() {
|
||||
return location;
|
||||
}
|
||||
|
||||
public void setLocation(String location) {
|
||||
this.location = location;
|
||||
}
|
||||
|
||||
public String getState() {
|
||||
return state;
|
||||
}
|
||||
|
||||
public void setState(String state) {
|
||||
this.state = state;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ConsumerGroupSummaryVO{" +
|
||||
"consumerGroup='" + consumerGroup + '\'' +
|
||||
", appIds=" + appIds +
|
||||
", location='" + location + '\'' +
|
||||
", state='" + state + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,103 @@
|
||||
package com.xiaojukeji.kafka.manager.common.entity.vo.rd;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 20/3/19
|
||||
*/
|
||||
@ApiModel(value = "GatewayConfigVO", description = "Gateway配置信息")
|
||||
public class GatewayConfigVO {
|
||||
@ApiModelProperty(value="ID")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty(value="配置类型")
|
||||
private String type;
|
||||
|
||||
@ApiModelProperty(value="配置名称")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty(value="配置值")
|
||||
private String value;
|
||||
|
||||
@ApiModelProperty(value="版本")
|
||||
private Long version;
|
||||
|
||||
@ApiModelProperty(value="创建时间")
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value="修改时间")
|
||||
private Date modifyTime;
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public Long getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
public void setVersion(Long version) {
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
public Date getCreateTime() {
|
||||
return createTime;
|
||||
}
|
||||
|
||||
public void setCreateTime(Date createTime) {
|
||||
this.createTime = createTime;
|
||||
}
|
||||
|
||||
public Date getModifyTime() {
|
||||
return modifyTime;
|
||||
}
|
||||
|
||||
public void setModifyTime(Date modifyTime) {
|
||||
this.modifyTime = modifyTime;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "GatewayConfigVO{" +
|
||||
"id=" + id +
|
||||
", type='" + type + '\'' +
|
||||
", name='" + name + '\'' +
|
||||
", value='" + value + '\'' +
|
||||
", version=" + version +
|
||||
", createTime=" + createTime +
|
||||
", modifyTime=" + modifyTime +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
package com.xiaojukeji.kafka.manager.common.entity.vo.rd.cluster;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
@ApiModel(description = "Broker基本信息")
|
||||
public class ControllerPreferredCandidateVO {
|
||||
@ApiModelProperty(value = "brokerId")
|
||||
private Integer brokerId;
|
||||
|
||||
@ApiModelProperty(value = "主机名")
|
||||
private String host;
|
||||
|
||||
@ApiModelProperty(value = "启动时间")
|
||||
private Long startTime;
|
||||
|
||||
@ApiModelProperty(value = "broker状态[0:在线, -1:不在线]")
|
||||
private Integer status;
|
||||
|
||||
public Integer getBrokerId() {
|
||||
return brokerId;
|
||||
}
|
||||
|
||||
public void setBrokerId(Integer brokerId) {
|
||||
this.brokerId = brokerId;
|
||||
}
|
||||
|
||||
public String getHost() {
|
||||
return host;
|
||||
}
|
||||
|
||||
public void setHost(String host) {
|
||||
this.host = host;
|
||||
}
|
||||
|
||||
public Long getStartTime() {
|
||||
return startTime;
|
||||
}
|
||||
|
||||
public void setStartTime(Long startTime) {
|
||||
this.startTime = startTime;
|
||||
}
|
||||
|
||||
public Integer getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(Integer status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ControllerPreferredBrokerVO{" +
|
||||
"brokerId=" + brokerId +
|
||||
", host='" + host + '\'' +
|
||||
", startTime=" + startTime +
|
||||
", status=" + status +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
@@ -9,6 +9,7 @@ import com.xiaojukeji.kafka.manager.common.entity.pojo.gateway.TopicConnectionDO
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -52,7 +53,7 @@ public class JsonUtils {
|
||||
return JSON.toJSONString(obj);
|
||||
}
|
||||
|
||||
public static List<TopicConnectionDO> parseTopicConnections(Long clusterId, JSONObject jsonObject) {
|
||||
public static List<TopicConnectionDO> parseTopicConnections(Long clusterId, JSONObject jsonObject, long postTime) {
|
||||
List<TopicConnectionDO> connectionDOList = new ArrayList<>();
|
||||
for (String clientType: jsonObject.keySet()) {
|
||||
JSONObject topicObject = jsonObject.getJSONObject(clientType);
|
||||
@@ -73,6 +74,7 @@ public class JsonUtils {
|
||||
connectionDO.setClusterId(clusterId);
|
||||
connectionDO.setTopicName(topicName);
|
||||
connectionDO.setType(clientType);
|
||||
connectionDO.setCreateTime(new Date(postTime));
|
||||
connectionDOList.add(connectionDO);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package com.xiaojukeji.kafka.manager.common.utils;
|
||||
|
||||
import com.xiaojukeji.kafka.manager.common.bizenum.IDCEnum;
|
||||
import com.xiaojukeji.kafka.manager.common.constant.TopicCreationConstant;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
|
||||
import java.util.List;
|
||||
@@ -83,23 +81,4 @@ public class ValidateUtils {
|
||||
public static boolean isNullOrLessThanZero(Double value) {
|
||||
return value == null || value < 0;
|
||||
}
|
||||
|
||||
public static boolean topicNameLegal(String idc, String topicName) {
|
||||
if (ValidateUtils.isNull(idc) || ValidateUtils.isNull(topicName)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 校验Topic的长度
|
||||
if (topicName.length() >= TopicCreationConstant.TOPIC_NAME_MAX_LENGTH) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 校验前缀
|
||||
if (IDCEnum.CN.getIdc().equals(idc) ||
|
||||
(IDCEnum.US.getIdc().equals(idc) && topicName.startsWith(TopicCreationConstant.TOPIC_NAME_PREFIX_US)) ||
|
||||
(IDCEnum.RU.getIdc().equals(idc) && topicName.startsWith(TopicCreationConstant.TOPIC_NAME_PREFIX_RU))) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -18,6 +18,8 @@ public class ZkPathUtil {
|
||||
|
||||
public static final String CONSUMER_ROOT_NODE = ZOOKEEPER_SEPARATOR + "consumers";
|
||||
|
||||
public static final String REASSIGN_PARTITIONS_ROOT_NODE = "/admin/reassign_partitions";
|
||||
|
||||
/**
|
||||
* config
|
||||
*/
|
||||
@@ -27,11 +29,11 @@ public class ZkPathUtil {
|
||||
|
||||
public static final String CONFIG_CLIENTS_ROOT_NODE = CONFIG_ROOT_NODE + ZOOKEEPER_SEPARATOR + "clients";
|
||||
|
||||
public static final String CONFIG_ENTITY_CHANGES_ROOT_NODE = CONFIG_ROOT_NODE + ZOOKEEPER_SEPARATOR + "changes/config_change_";
|
||||
public static final String CONFIG_ENTITY_CHANGES_ROOT_NODE = CONFIG_ROOT_NODE + ZOOKEEPER_SEPARATOR + "changes/config_change_";
|
||||
|
||||
public static final String REASSIGN_PARTITIONS_ROOT_NODE = "/admin/reassign_partitions";
|
||||
private static final String D_METRICS_CONFIG_ROOT_NODE = CONFIG_ROOT_NODE + ZOOKEEPER_SEPARATOR + "KafkaExMetrics";
|
||||
|
||||
private static final String D_METRICS_CONFIG_ROOT_NODE = CONFIG_ROOT_NODE + ZOOKEEPER_SEPARATOR + "KafkaExMetrics";
|
||||
public static final String D_CONTROLLER_CANDIDATES = CONFIG_ROOT_NODE + ZOOKEEPER_SEPARATOR + "extension/candidates";
|
||||
|
||||
public static String getBrokerIdNodePath(Integer brokerId) {
|
||||
return BROKER_IDS_ROOT + ZOOKEEPER_SEPARATOR + String.valueOf(brokerId);
|
||||
|
||||
Reference in New Issue
Block a user