From cca2effbd2147ef9b1d5f102bdfef17fb0aca790 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9A=AE=E5=85=89=EF=BC=9A=E5=9F=8E=E4=B8=AD=E5=9F=8E?= <806783409@qq.com> Date: Tue, 12 Feb 2019 22:33:33 +0800 Subject: [PATCH] =?UTF-8?q?dubbo=E6=96=87=E6=A1=A3=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../doc/dubbo/controller/DubboController.java | 42 ++++++---- .../doc/dubbo/framework/bean/DubboInfo.java | 83 ++++++++++++------- .../framework/bean/ReferenceConfigHolder.java | 10 +-- .../src/main/resources/application.yml | 9 +- 4 files changed, 89 insertions(+), 55 deletions(-) diff --git a/zyplayer-doc-dubbo/src/main/java/com/zyplayer/doc/dubbo/controller/DubboController.java b/zyplayer-doc-dubbo/src/main/java/com/zyplayer/doc/dubbo/controller/DubboController.java index 268e9276..51c8bfaa 100644 --- a/zyplayer-doc-dubbo/src/main/java/com/zyplayer/doc/dubbo/controller/DubboController.java +++ b/zyplayer-doc-dubbo/src/main/java/com/zyplayer/doc/dubbo/controller/DubboController.java @@ -54,7 +54,7 @@ public class DubboController { } else { providerList = this.getDubboInfoByZookeeper(); } - GenericService bean = ReferenceConfigHolder.getBean(providerList.get(0)); + GenericService bean = ReferenceConfigHolder.getBean(providerList.get(0).getNodeList().get(0)); Object o = bean.$invoke("getUserList", new String[]{}, new String[]{}); System.out.println(o); return DocResponseJson.ok(providerList); @@ -67,15 +67,19 @@ public class DubboController { String resultStr = HttpUtil.get(nacosUrl + "/v1/ns/instance/list?serviceName=" + service); NacosDubboInfo dubboInstance = JSON.parseObject(resultStr, NacosDubboInfo.class); List hosts = dubboInstance.getHosts(); + DubboInfo dubboInfo = new DubboInfo(); + List nodeList = new LinkedList<>(); for (NacosDubboInfo.HostsBean host : hosts) { - DubboInfo dubboInfo = new DubboInfo(); - dubboInfo.setIp(host.getIp()); - dubboInfo.setPort(host.getPort()); - dubboInfo.setInterfaceX(host.getMetadata().getInterfaceX()); - dubboInfo.setMethods(host.getMetadata().getMethods().split(",")); - dubboInfo.setApplication(host.getMetadata().getApplication()); - providerList.add(dubboInfo); + DubboInfo.DubboNodeInfo dubboNodeInfo = new DubboInfo.DubboNodeInfo(); + dubboNodeInfo.setIp(host.getIp()); + dubboNodeInfo.setPort(host.getPort()); + dubboNodeInfo.setInterfaceX(host.getMetadata().getInterfaceX()); + dubboNodeInfo.setMethods(host.getMetadata().getMethods().split(",")); + dubboNodeInfo.setApplication(host.getMetadata().getApplication()); } + dubboInfo.setInterfaceX(service.substring(service.indexOf(":") + 1)); + dubboInfo.setNodeList(nodeList); + providerList.add(dubboInfo); } return providerList; } @@ -91,7 +95,8 @@ public class DubboController { List providerList = new LinkedList<>(); for (String dubboStr : dubboList) { List providers = client.getChildren().forPath("/dubbo/" + dubboStr + "/providers"); - List dubboInfoList = providers.stream().map(val -> { + + List nodeList = providers.stream().map(val -> { String tempStr = val; try { tempStr = URLDecoder.decode(val, "utf-8"); @@ -110,15 +115,18 @@ public class DubboController { String[] split = param.split("="); paramMap.put(split[0], split[1]); } - DubboInfo dubboInfo = new DubboInfo(); - dubboInfo.setIp(ipPortArr[0]); - dubboInfo.setPort(NumberUtils.toInt(ipPortArr[1])); - dubboInfo.setInterfaceX(paramMap.get("interface")); - dubboInfo.setMethods(paramMap.get("methods").split(",")); - dubboInfo.setApplication(paramMap.get("application")); - return dubboInfo; + DubboInfo.DubboNodeInfo dubboNodeInfo = new DubboInfo.DubboNodeInfo(); + dubboNodeInfo.setIp(ipPortArr[0]); + dubboNodeInfo.setPort(NumberUtils.toInt(ipPortArr[1])); + dubboNodeInfo.setInterfaceX(paramMap.get("interface")); + dubboNodeInfo.setMethods(paramMap.get("methods").split(",")); + dubboNodeInfo.setApplication(paramMap.get("application")); + return dubboNodeInfo; }).collect(Collectors.toList()); - providerList.addAll(dubboInfoList); + DubboInfo dubboInfo = new DubboInfo(); + dubboInfo.setInterfaceX(dubboStr); + dubboInfo.setNodeList(nodeList); + providerList.add(dubboInfo); } return providerList; } diff --git a/zyplayer-doc-dubbo/src/main/java/com/zyplayer/doc/dubbo/framework/bean/DubboInfo.java b/zyplayer-doc-dubbo/src/main/java/com/zyplayer/doc/dubbo/framework/bean/DubboInfo.java index ae96e796..7d8b2387 100644 --- a/zyplayer-doc-dubbo/src/main/java/com/zyplayer/doc/dubbo/framework/bean/DubboInfo.java +++ b/zyplayer-doc-dubbo/src/main/java/com/zyplayer/doc/dubbo/framework/bean/DubboInfo.java @@ -2,32 +2,72 @@ package com.zyplayer.doc.dubbo.framework.bean; import com.alibaba.fastjson.annotation.JSONField; +import java.util.List; + /** * @author 暮光:城中城 * @since 2019年1月10日 **/ public class DubboInfo { - private Integer port; - private String ip; @JSONField(name = "interface") private String interfaceX; - private String[] methods; - private String application; + private List nodeList; - public Integer getPort() { - return port; + public static class DubboNodeInfo { + private Integer port; + private String ip; + @JSONField(name = "interface") + private String interfaceX; + private String[] methods; + private String application; + + public Integer getPort() { + return port; + } + + public void setPort(Integer port) { + this.port = port; + } + + public String getIp() { + return ip; + } + + public void setIp(String ip) { + this.ip = ip; + } + + public String getInterfaceX() { + return interfaceX; + } + + public void setInterfaceX(String interfaceX) { + this.interfaceX = interfaceX; + } + + public String[] getMethods() { + return methods; + } + + public void setMethods(String[] methods) { + this.methods = methods; + } + + public String getApplication() { + return application; + } + + public void setApplication(String application) { + this.application = application; + } } - public void setPort(Integer port) { - this.port = port; + public List getNodeList() { + return nodeList; } - public String getIp() { - return ip; - } - - public void setIp(String ip) { - this.ip = ip; + public void setNodeList(List nodeList) { + this.nodeList = nodeList; } public String getInterfaceX() { @@ -38,19 +78,4 @@ public class DubboInfo { this.interfaceX = interfaceX; } - public String[] getMethods() { - return methods; - } - - public void setMethods(String[] methods) { - this.methods = methods; - } - - public String getApplication() { - return application; - } - - public void setApplication(String application) { - this.application = application; - } } diff --git a/zyplayer-doc-dubbo/src/main/java/com/zyplayer/doc/dubbo/framework/bean/ReferenceConfigHolder.java b/zyplayer-doc-dubbo/src/main/java/com/zyplayer/doc/dubbo/framework/bean/ReferenceConfigHolder.java index 600a947a..9d520b45 100644 --- a/zyplayer-doc-dubbo/src/main/java/com/zyplayer/doc/dubbo/framework/bean/ReferenceConfigHolder.java +++ b/zyplayer-doc-dubbo/src/main/java/com/zyplayer/doc/dubbo/framework/bean/ReferenceConfigHolder.java @@ -14,10 +14,10 @@ import java.util.concurrent.ConcurrentHashMap; public class ReferenceConfigHolder { private static Map referenceConfigMap = new ConcurrentHashMap<>(); - public static GenericService getBean(DubboInfo dubboInfo) { - String name = dubboInfo.getInterfaceX(); - String url = "dubbo://" + dubboInfo.getIp() + ":" + dubboInfo.getPort() + "/" + dubboInfo.getInterfaceX(); - ReferenceConfig referenceConfig = referenceConfigMap.get(name); + public static GenericService getBean(DubboInfo.DubboNodeInfo dubboNodeInfo) { + String name = dubboNodeInfo.getInterfaceX(); + String url = "dubbo://" + dubboNodeInfo.getIp() + ":" + dubboNodeInfo.getPort() + "/" + dubboNodeInfo.getInterfaceX(); + ReferenceConfig referenceConfig = referenceConfigMap.get(url); if (referenceConfig == null) { ApplicationConfig application = new ApplicationConfig(); application.setName("zyplayer-doc-consume"); @@ -31,7 +31,7 @@ public class ReferenceConfigHolder { referenceConfig.setInterface(name.substring(name.lastIndexOf(".") + 1)); referenceConfig.setGeneric(true); referenceConfig.setApplication(application); - referenceConfigMap.put(name, referenceConfig); + referenceConfigMap.put(url, referenceConfig); } return (GenericService) referenceConfig.get(); } diff --git a/zyplayer-doc-manage/src/main/resources/application.yml b/zyplayer-doc-manage/src/main/resources/application.yml index bb4c0b60..9ee23f26 100644 --- a/zyplayer-doc-manage/src/main/resources/application.yml +++ b/zyplayer-doc-manage/src/main/resources/application.yml @@ -13,10 +13,11 @@ zyplayer: doc: # dubbo相关配置 dubbo: -# zookeeper: -# url: 127.0.0.1:2181 - nacos: - url: http://127.0.0.1:8848/nacos + # 优先使用zookeeper,未配置时找nacos的配置 + zookeeper: + url: 127.0.0.1:2181 +# nacos: +# url: http://127.0.0.1:8848/nacos # 服务名称,多个使用 ; 分割 service: providers:com.zyplayer.dubbo.service.UserService;providers:com.zyplayer.dubbo.service.AnnotateService; # swagger相关配置