说明
作用如下:
保存cluster信息提供给网络传输
属性brokerAddrTable用于记录每个brokerName对应的BrokerData信息
属性clusterAddrTable用于记录每个clusterName对应的brokerName集合
把前面brokerData的图再拿来用,方便理解cluster,brokerName与BrokerData的关系
源码
直接贴了也很简单
public class ClusterInfo extends RemotingSerializable {
private HashMap<String/* brokerName */, BrokerData> brokerAddrTable;//key是brokerName
private HashMap<String/* clusterName */, Set<String/* brokerName */>> clusterAddrTable;//key是clusterName
public HashMap<String, BrokerData> getBrokerAddrTable() {
return brokerAddrTable;
}
public void setBrokerAddrTable(HashMap<String, BrokerData> brokerAddrTable) {
this.brokerAddrTable = brokerAddrTable;
}
public HashMap<String, Set<String>> getClusterAddrTable() {
return clusterAddrTable;
}
public void setClusterAddrTable(HashMap<String, Set<String>> clusterAddrTable) {
this.clusterAddrTable = clusterAddrTable;
}
//获取cluster下所有brokerName对应的brokerData的所有地址
public String[] retrieveAllAddrByCluster(String cluster) {
List<String> addrs = new ArrayList<String>();
if (clusterAddrTable.containsKey(cluster)) {
Set<String> brokerNames = clusterAddrTable.get(cluster);
for (String brokerName : brokerNames) {
BrokerData brokerData = brokerAddrTable.get(brokerName);
if (null != brokerData) {
addrs.addAll(brokerData.getBrokerAddrs().values());
}
}
}
return addrs.toArray(new String[] {});
}
//获取所有cluster名字
public String[] retrieveAllClusterNames() {
return clusterAddrTable.keySet().toArray(new String[] {});
}
}
主要注意retrieveAllAddrByCluster 和 retrieveAllClusterNames两个方法就行了








网友评论