nacos改为通过它后端接口获取服务列表

This commit is contained in:
暮光:城中城
2019-07-02 23:50:31 +08:00
parent dc4d1e1c65
commit 0214934b1f
4 changed files with 89 additions and 12 deletions

View File

@@ -6,6 +6,8 @@ import com.zyplayer.doc.core.annotation.AuthMan;
import com.zyplayer.doc.core.json.DocResponseJson; import com.zyplayer.doc.core.json.DocResponseJson;
import com.zyplayer.doc.dubbo.controller.param.DubboRequestParam; import com.zyplayer.doc.dubbo.controller.param.DubboRequestParam;
import com.zyplayer.doc.dubbo.controller.vo.DubboInfoVo; import com.zyplayer.doc.dubbo.controller.vo.DubboInfoVo;
import com.zyplayer.doc.dubbo.controller.vo.NacosServiceInfoVo;
import com.zyplayer.doc.dubbo.controller.vo.NacosServiceListVo;
import com.zyplayer.doc.dubbo.framework.bean.DubboDocInfo; import com.zyplayer.doc.dubbo.framework.bean.DubboDocInfo;
import com.zyplayer.doc.dubbo.framework.bean.DubboInfo; import com.zyplayer.doc.dubbo.framework.bean.DubboInfo;
import com.zyplayer.doc.dubbo.framework.bean.NacosDubboInfo; import com.zyplayer.doc.dubbo.framework.bean.NacosDubboInfo;
@@ -64,8 +66,8 @@ public class DubboController {
private String metadataZookeeperUrl; private String metadataZookeeperUrl;
@Value("${zyplayer.doc.dubbo.nacos.url:}") @Value("${zyplayer.doc.dubbo.nacos.url:}")
private String nacosUrl; private String nacosUrl;
@Value("${zyplayer.doc.dubbo.nacos.service:}") // @Value("${zyplayer.doc.dubbo.nacos.service:}")
private String nacosService; // private String nacosService;
@Resource @Resource
private MgDubboStorageService mgDubboStorageService; private MgDubboStorageService mgDubboStorageService;
@@ -113,7 +115,7 @@ public class DubboController {
List<DubboInfo> providerList; List<DubboInfo> providerList;
try { try {
if (StringUtils.isBlank(serviceZookeeperUrl)) { if (StringUtils.isBlank(serviceZookeeperUrl)) {
if (StringUtils.isBlank(nacosUrl) || StringUtils.isBlank(nacosService)) { if (StringUtils.isBlank(nacosUrl)) {// || StringUtils.isBlank(nacosService)) {
return DocResponseJson.warn("zyplayer.doc.dubbo.zookeeper.url、zyplayer.doc.dubbo.nacos.url 参数均未配置"); return DocResponseJson.warn("zyplayer.doc.dubbo.zookeeper.url、zyplayer.doc.dubbo.nacos.url 参数均未配置");
} }
logger.info("zookeeper参数未配置使用nacos配置"); logger.info("zookeeper参数未配置使用nacos配置");
@@ -303,9 +305,15 @@ public class DubboController {
**/ **/
private List<DubboInfo> getDubboInfoByNacos() { private List<DubboInfo> getDubboInfoByNacos() {
List<DubboInfo> providerList = new LinkedList<>(); List<DubboInfo> providerList = new LinkedList<>();
String[] nacosServiceArr = nacosService.split(";"); // 获取所有的服务列表
for (String service : nacosServiceArr) { String serviceListStr = HttpUtil.get(nacosUrl + "/v1/ns/catalog/serviceList?startPg=1&pgSize=100000");
String resultStr = HttpUtil.get(nacosUrl + "/v1/ns/instance/list?serviceName=providers:" + service); NacosServiceInfoVo nacosServiceInfoVo = JSON.parseObject(serviceListStr, NacosServiceInfoVo.class);
if (nacosServiceInfoVo == null || nacosServiceInfoVo.getServiceList().isEmpty()) {
return providerList;
}
for (NacosServiceListVo service : nacosServiceInfoVo.getServiceList()) {
String serviceName = service.getName();
String resultStr = HttpUtil.get(nacosUrl + "/v1/ns/instance/list?serviceName=" + serviceName);
NacosDubboInfo dubboInstance = JSON.parseObject(resultStr, NacosDubboInfo.class); NacosDubboInfo dubboInstance = JSON.parseObject(resultStr, NacosDubboInfo.class);
List<NacosDubboInfo.HostsBean> hosts = dubboInstance.getHosts(); List<NacosDubboInfo.HostsBean> hosts = dubboInstance.getHosts();
DubboInfo dubboInfo = new DubboInfo(); DubboInfo dubboInfo = new DubboInfo();
@@ -319,7 +327,10 @@ public class DubboController {
dubboNodeInfo.setApplication(host.getMetadata().getApplication()); dubboNodeInfo.setApplication(host.getMetadata().getApplication());
nodeList.add(dubboNodeInfo); nodeList.add(dubboNodeInfo);
} }
dubboInfo.setInterfaceX(service); if (serviceName.contains(":")) {
serviceName = serviceName.substring(serviceName.indexOf(":") + 1);
}
dubboInfo.setInterfaceX(serviceName);
dubboInfo.setNodeList(nodeList); dubboInfo.setNodeList(nodeList);
providerList.add(dubboInfo); providerList.add(dubboInfo);
} }

View File

@@ -0,0 +1,26 @@
package com.zyplayer.doc.dubbo.controller.vo;
import java.util.List;
public class NacosServiceInfoVo {
private int count;
private List<NacosServiceListVo> serviceList;
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public List<NacosServiceListVo> getServiceList() {
return serviceList;
}
public void setServiceList(List<NacosServiceListVo> serviceList) {
this.serviceList = serviceList;
}
}

View File

@@ -0,0 +1,40 @@
package com.zyplayer.doc.dubbo.controller.vo;
public class NacosServiceListVo {
private String name;
private int clusterCount;
private int ipCount;
private int healthyInstanceCount;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getClusterCount() {
return clusterCount;
}
public void setClusterCount(int clusterCount) {
this.clusterCount = clusterCount;
}
public int getIpCount() {
return ipCount;
}
public void setIpCount(int ipCount) {
this.ipCount = ipCount;
}
public int getHealthyInstanceCount() {
return healthyInstanceCount;
}
public void setHealthyInstanceCount(int healthyInstanceCount) {
this.healthyInstanceCount = healthyInstanceCount;
}
}

View File

@@ -43,14 +43,14 @@ zyplayer:
dubbo: dubbo:
# 优先使用zookeeper未配置时找nacos的配置 # 优先使用zookeeper未配置时找nacos的配置
zookeeper: zookeeper:
url: 127.0.0.1:2181 # url: 127.0.0.1:2181
# 服务参数那些信息的服务地址dubbo7.0新特性 # 服务参数那些信息的服务地址dubbo7.0新特性
# metadata-url: 127.0.0.1:2181 # metadata-url: 127.0.0.1:2181
nacos: nacos:
# url: http://127.0.0.1:8848/nacos url: http://127.0.0.1:8848/nacos
# 服务名称,多个使用 ; 分割nacos没办法获取所有的服务列表所以需要指定 # 服务名称,多个使用 ; 分割nacos没办法获取所有的服务列表所以需要指定,好像通过后端接口可以获取,不知道后续版本会不会登录后才可以访问
service: "com.zyplayer.dubbo.service.UserService;\ # service: "com.zyplayer.dubbo.service.UserService;\
com.zyplayer.dubbo.service.AnnotateService;" # com.zyplayer.dubbo.service.AnnotateService;"
# ------数据库文档相关------ # ------数据库文档相关------
# 打开/zyplayer_doc_manage/doc-db.html即可看到这里配置的数据库的文档 # 打开/zyplayer_doc_manage/doc-db.html即可看到这里配置的数据库的文档
db: db: