aboutsummaryrefslogtreecommitdiffstats
path: root/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/serviceListener/MicroServiceChangeListener.java
diff options
context:
space:
mode:
Diffstat (limited to 'apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/serviceListener/MicroServiceChangeListener.java')
-rw-r--r--apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/serviceListener/MicroServiceChangeListener.java1232
1 files changed, 603 insertions, 629 deletions
diff --git a/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/serviceListener/MicroServiceChangeListener.java b/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/serviceListener/MicroServiceChangeListener.java
index 17bc353..2e1b8ff 100644
--- a/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/serviceListener/MicroServiceChangeListener.java
+++ b/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/serviceListener/MicroServiceChangeListener.java
@@ -1,17 +1,15 @@
/*******************************************************************************
* Copyright 2016-2017 ZTE, Inc. and others.
*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
******************************************************************************/
package org.onap.msb.apiroute.wrapper.serviceListener;
@@ -31,7 +29,6 @@ import org.onap.msb.apiroute.api.RouteServer;
import org.onap.msb.apiroute.wrapper.ApiRouteServiceWrapper;
import org.onap.msb.apiroute.wrapper.CustomRouteServiceWrapper;
import org.onap.msb.apiroute.wrapper.IuiRouteServiceWrapper;
-import org.onap.msb.apiroute.wrapper.util.CommonUtil;
import org.onap.msb.apiroute.wrapper.util.ConfigUtil;
import org.onap.msb.apiroute.wrapper.util.HttpClientUtil;
import org.onap.msb.apiroute.wrapper.util.JacksonJsonUtil;
@@ -44,751 +41,728 @@ import com.fasterxml.jackson.core.type.TypeReference;
public class MicroServiceChangeListener implements IMicroServiceChangeListener {
- private static final Logger LOGGER = LoggerFactory.getLogger(MicroServiceChangeListener.class);
+ private static final Logger LOGGER = LoggerFactory.getLogger(MicroServiceChangeListener.class);
- @Override
- public void onDelete(MicroServiceFullInfo microServiceInfo) throws Exception {
+ @Override
+ public void onDelete(MicroServiceFullInfo microServiceInfo) throws Exception {
- String path = microServiceInfo.getPath();
+ String path = microServiceInfo.getPath();
- String[] routeWay = ConfigUtil.getInstance().getRouteWay();
+ String[] routeWay = ConfigUtil.getInstance().getRouteWay();
- for (int i = 0; i < routeWay.length; i++) {
+ for (int i = 0; i < routeWay.length; i++) {
- if (StringUtils.isNotBlank(path) && !"/".equals(path)) {
- // 1.按path优先判断类型
- String host = getHost(microServiceInfo);
- deleteServiceByUrl(path, host, microServiceInfo.getPublish_port(), routeWay[i]);
- } else {
- // 2.1 域名判断url
- if (RouteUtil.ROUTEWAY_DOMAIN.equals(routeWay[i]) && ifRootByDomain(microServiceInfo)) {
- deleteServiceByDomain4Root(microServiceInfo);
- } else {
- // 2.2 按协议优先判断类型
- deleteServiceByProtocol(microServiceInfo, routeWay[i]);
- }
-
- }
+ if (StringUtils.isNotBlank(path) && !"/".equals(path)) {
+ // 1.按path优先判断类型
+ String host = getHost(microServiceInfo);
+ deleteServiceByUrl(path, host, microServiceInfo.getPublish_port(), routeWay[i]);
+ } else {
+ // 2.1 域名判断url
+ if (RouteUtil.ROUTEWAY_DOMAIN.equals(routeWay[i]) && ifRootByDomain(microServiceInfo)) {
+ deleteServiceByDomain4Root(microServiceInfo);
+ } else {
+ // 2.2 按协议优先判断类型
+ deleteServiceByProtocol(microServiceInfo, routeWay[i]);
+ }
+ }
- }
-
- }
+ }
- @Override
- public void onSave(MicroServiceFullInfo microServiceInfo) throws Exception {
+ }
- String path = microServiceInfo.getPath();
- String[] routeWay = ConfigUtil.getInstance().getRouteWay();
- for (int i = 0; i < routeWay.length; i++) {
- // 1.按path优先判断类型
- if (StringUtils.isNotBlank(path) && !"/".equals(path)) {
- saveServiceByPath(microServiceInfo, routeWay[i]);
- } else {
- // 2.1 域名判断url
- if (RouteUtil.ROUTEWAY_DOMAIN.equals(routeWay[i]) && ifRootByDomain(microServiceInfo)) {
- saveServiceByDomain4Root(microServiceInfo);
- } else {
- // 2.2 按协议优先判断类型
- saveServiceByProtocol(microServiceInfo, routeWay[i]);
+ @Override
+ public void onSave(MicroServiceFullInfo microServiceInfo) throws Exception {
+
+ String path = microServiceInfo.getPath();
+ String[] routeWay = ConfigUtil.getInstance().getRouteWay();
+
+ for (int i = 0; i < routeWay.length; i++) {
+ // 1.按path优先判断类型
+ if (StringUtils.isNotBlank(path) && !"/".equals(path)) {
+ saveServiceByPath(microServiceInfo, routeWay[i]);
+ } else {
+ // 2.1 域名判断url
+ if (RouteUtil.ROUTEWAY_DOMAIN.equals(routeWay[i]) && ifRootByDomain(microServiceInfo)) {
+ saveServiceByDomain4Root(microServiceInfo);
+ } else {
+ // 2.2 按协议优先判断类型
+ saveServiceByProtocol(microServiceInfo, routeWay[i]);
+ }
+ }
}
- }
- }
- }
-
-
- //判断按协议发布地址是否和注册的URL一致,如果一致发布地址保存为/,否则保存为协议类型的发布地址
- private boolean ifRootByDomain(MicroServiceFullInfo microServiceInfo){
-
-
- if("/".equals(microServiceInfo.getUrl())) return true;
-
- String protocol = microServiceInfo.getProtocol();
- String routeName =
- RouteUtil.getRouteNameByns(microServiceInfo.getServiceName(),
- microServiceInfo.getNamespace());
- String publishUrl="";
- String version = "";
- if (StringUtils.isNotBlank(microServiceInfo.getVersion())) {
- version = "/" + microServiceInfo.getVersion();
}
- switch (protocol) {
- case RouteUtil.PROTOCOL_UI:
- publishUrl = "/iui/" + routeName;
- break;
- case RouteUtil.PROTOCOL_REST:
- publishUrl = "/api/" + routeName + version;
- break;
- case RouteUtil.PROTOCOL_HTTP:
- publishUrl = "/" + routeName + version;
- break;
- }
- return publishUrl.equals(microServiceInfo.getUrl());
-
- }
+ // 判断按协议发布地址是否和注册的URL一致,如果一致发布地址保存为/,否则保存为协议类型的发布地址
+ private boolean ifRootByDomain(MicroServiceFullInfo microServiceInfo) {
- private void saveServiceByDomain4Root(MicroServiceFullInfo microServiceInfo) throws Exception {
- CustomRouteInfo[] customRouteInfos =
- this.buildCustomRouteInfo(microServiceInfo, "/", RouteUtil.ROUTEWAY_DOMAIN);
- for (int i = 0; i < customRouteInfos.length; i++) {
- customRouteInfos[i].setUrl("/");
- CustomRouteServiceWrapper.getInstance().saveCustomRouteInstance(customRouteInfos[i],
- RouteUtil.ROUTEWAY_DOMAIN);
- }
- }
-
- private void deleteServiceByDomain4Root(MicroServiceFullInfo microServiceInfo) throws Exception {
-
- CustomRouteServiceWrapper.getInstance().deleteCustomRoute("/", getHost(microServiceInfo),
- microServiceInfo.getPublish_port(), RouteUtil.ROUTEWAY_DOMAIN);
- }
-
- /**
- * @Title saveServiceByProtocol
- * @Description TODO(按用户注册协议保存服务)
- * @param microServiceInfo
- * @param routeWay
- * @return void
- * @throws Exception
- */
- private void saveServiceByProtocol(MicroServiceFullInfo microServiceInfo, String routeWay)
- throws Exception {
- String protocol = microServiceInfo.getProtocol();
- String routeName =
- RouteUtil.getRouteNameByns(microServiceInfo.getServiceName(),
- microServiceInfo.getNamespace());
-
- switch (protocol) {
- case RouteUtil.PROTOCOL_UI:
- IuiRouteInfo[] iuiRouteInfos =
- this.buildIuiRouteInfo(microServiceInfo, routeName, routeWay);
- for (int i = 0; i < iuiRouteInfos.length; i++) {
- IuiRouteServiceWrapper.getInstance().saveIuiRouteInstance(iuiRouteInfos[i], routeWay);
- }
- break;
+ if ("/".equals(microServiceInfo.getUrl()))
+ return true;
- case RouteUtil.PROTOCOL_REST:
+ String protocol = microServiceInfo.getProtocol();
+ String routeName =
+ RouteUtil.getRouteNameByns(microServiceInfo.getServiceName(), microServiceInfo.getNamespace());
+ String publishUrl = "";
+ String version = "";
+ if (StringUtils.isNotBlank(microServiceInfo.getVersion())) {
+ version = "/" + microServiceInfo.getVersion();
+ }
- ApiRouteInfo[] apiRouteInfos =
- this.buildApiRouteInfo(microServiceInfo, routeName, microServiceInfo.getVersion(),
- routeWay);
- for (int i = 0; i < apiRouteInfos.length; i++) {
- ApiRouteServiceWrapper.getInstance().saveApiRouteInstance(apiRouteInfos[i], routeWay);
+ switch (protocol) {
+ case RouteUtil.PROTOCOL_UI:
+ publishUrl = "/iui/" + routeName;
+ break;
+ case RouteUtil.PROTOCOL_REST:
+ publishUrl = "/api/" + routeName + version;
+ break;
+ case RouteUtil.PROTOCOL_HTTP:
+ publishUrl = "/" + routeName + version;
+ break;
}
- break;
- case RouteUtil.PROTOCOL_HTTP:
+ return publishUrl.equals(microServiceInfo.getUrl());
+
+ }
+
+
+ private void saveServiceByDomain4Root(MicroServiceFullInfo microServiceInfo) throws Exception {
+
CustomRouteInfo[] customRouteInfos =
- this.buildCustomRouteInfo(microServiceInfo,
- getHttpName(routeName, microServiceInfo.getVersion()), routeWay);
+ this.buildCustomRouteInfo(microServiceInfo, "/", RouteUtil.ROUTEWAY_DOMAIN);
for (int i = 0; i < customRouteInfos.length; i++) {
- CustomRouteServiceWrapper.getInstance().saveCustomRouteInstance(customRouteInfos[i],
- routeWay);
+ customRouteInfos[i].setUrl("/");
+ CustomRouteServiceWrapper.getInstance().saveCustomRouteInstance(customRouteInfos[i],
+ RouteUtil.ROUTEWAY_DOMAIN);
}
- break;
}
- }
-
- /**
- * @Title deleteServiceByProtocol
- * @Description TODO(按用户注册协议删除服务)
- * @param microServiceInfo
- * @param routeWay
- * @return void
- */
- private void deleteServiceByProtocol(MicroServiceFullInfo microServiceInfo, String routeWay) {
- String protocol = microServiceInfo.getProtocol();
- String host = getHost(microServiceInfo);
- String routeName =
- RouteUtil.getRouteNameByns(microServiceInfo.getServiceName(),
- microServiceInfo.getNamespace());
-
- if (RouteUtil.PROTOCOL_UI.equals(protocol)) {
-
- if (RouteUtil.ROUTEWAY_IP.equals(routeWay)) {
- // two ports
- String[] publishPorts = StringUtils.split(microServiceInfo.getPublish_port(), "|");
- if (publishPorts.length == 2) {
- IuiRouteServiceWrapper.getInstance().deleteIuiRoute(routeName, host, publishPorts[0],
- routeWay);
- IuiRouteServiceWrapper.getInstance().deleteIuiRoute(routeName, host, publishPorts[1],
- routeWay);
- return;
- }
- }
-
- IuiRouteServiceWrapper.getInstance().deleteIuiRoute(routeName, host,
- microServiceInfo.getPublish_port(), routeWay);
- } else if (RouteUtil.PROTOCOL_REST.equals(protocol)) {
-
- if (RouteUtil.ROUTEWAY_IP.equals(routeWay)) {
- // two ports
- String[] publishPorts = StringUtils.split(microServiceInfo.getPublish_port(), "|");
- if (publishPorts.length == 2) {
- ApiRouteServiceWrapper.getInstance().deleteApiRoute(routeName,
- microServiceInfo.getVersion(), host, publishPorts[0], routeWay);
- ApiRouteServiceWrapper.getInstance().deleteApiRoute(routeName,
- microServiceInfo.getVersion(), host, publishPorts[1], routeWay);
- return;
- }
- }
- ApiRouteServiceWrapper.getInstance().deleteApiRoute(routeName, microServiceInfo.getVersion(),
- host, microServiceInfo.getPublish_port(), routeWay);
- } else if (RouteUtil.PROTOCOL_HTTP.equals(protocol)) {
-
- if (RouteUtil.ROUTEWAY_IP.equals(routeWay)) {
- // two ports
- String[] publishPorts = StringUtils.split(microServiceInfo.getPublish_port(), "|");
- if (publishPorts.length == 2) {
- CustomRouteServiceWrapper.getInstance().deleteCustomRoute(
- getHttpName(routeName, microServiceInfo.getVersion()), host, publishPorts[0],
- routeWay);
- CustomRouteServiceWrapper.getInstance().deleteCustomRoute(
- getHttpName(routeName, microServiceInfo.getVersion()), host, publishPorts[1],
- routeWay);
- return;
- }
- }
- CustomRouteServiceWrapper.getInstance().deleteCustomRoute(
- getHttpName(routeName, microServiceInfo.getVersion()), host,
- microServiceInfo.getPublish_port(), routeWay);
- }
- }
-
- /**
- * @Title saveServiceByUrl
- * @Description TODO(按URL地址判断服务协议并保存到路由表)
- * @param url
- * @param microServiceInfo
- * @param routeWay
- * @return void
- * @throws Exception
- */
- private void saveServiceByPath(MicroServiceFullInfo microServiceInfo, String routeWay)
- throws Exception {
- String redis_serviceName;
- String path=microServiceInfo.getPath();
- if (RegExpTestUtil.apiRouteUrlRegExpTest(path)) {
- // protocol:"REST"
- String[] serviceKey = RegExpTestUtil.apiServiceNameMatch4URL(path);
- if (serviceKey == null) {
- LOGGER.error("save api Service ByUrl is error:[url]" + path);
- return;
- }
- redis_serviceName = serviceKey[0];
- String redis_serviceVersion = serviceKey[1];
-
- ApiRouteInfo[] apiRouteInfos =
- this.buildApiRouteInfo(microServiceInfo, redis_serviceName, redis_serviceVersion,
- routeWay);
- for (int i = 0; i < apiRouteInfos.length; i++) {
- ApiRouteServiceWrapper.getInstance().saveApiRouteInstance(apiRouteInfos[i], routeWay);
- }
- } else if (RegExpTestUtil.iuiRouteUrlRegExpTest(path)) {
- // protocol:"UI"
- // 根据url获取服务名
- redis_serviceName = RegExpTestUtil.iuiServiceNameMatch4URL(path);
- if (redis_serviceName == null) {
- LOGGER.error("save iui Service ByUrl is error:[url]" + path);
- return;
- }
- IuiRouteInfo[] iuiRouteInfos =
- this.buildIuiRouteInfo(microServiceInfo, redis_serviceName, routeWay);
- for (int i = 0; i < iuiRouteInfos.length; i++) {
- IuiRouteServiceWrapper.getInstance().saveIuiRouteInstance(iuiRouteInfos[i], routeWay);
- }
- } else {
- // protocol:"HTTP";
- redis_serviceName = path;
- CustomRouteInfo[] customRouteInfos =
- this.buildCustomRouteInfo(microServiceInfo, redis_serviceName, routeWay);
- for (int i = 0; i < customRouteInfos.length; i++) {
- CustomRouteServiceWrapper.getInstance().saveCustomRouteInstance(customRouteInfos[i],
- routeWay);
- }
+
+ private void deleteServiceByDomain4Root(MicroServiceFullInfo microServiceInfo) throws Exception {
+
+ CustomRouteServiceWrapper.getInstance().deleteCustomRoute("/", getHost(microServiceInfo),
+ microServiceInfo.getPublish_port(), RouteUtil.ROUTEWAY_DOMAIN);
}
- }
-
- /**
- * @Title deleteServiceByUrl
- * @Description TODO(按URL地址判断服务协议并从路由表删除)
- * @param url
- * @param host
- * @param publish_port
- * @param routeWay
- * @return void
- */
- private void deleteServiceByUrl(String url, String host, String publish_port, String routeWay) {
- // 根据Url格式判断服务类型
- String redis_serviceName;
-
- if (RegExpTestUtil.apiRouteUrlRegExpTest(url)) {
- // protocol:"REST"
- String[] serviceKey = RegExpTestUtil.apiServiceNameMatch4URL(url);
- if (serviceKey == null) {
- LOGGER.error("delete api Service ByUrl is error:[url]" + url);
- return;
- }
-
- redis_serviceName = serviceKey[0];
- String redis_serviceVersion = serviceKey[1];
-
- if (RouteUtil.ROUTEWAY_IP.equals(routeWay)) {
- // two ports
- String[] publishPorts = StringUtils.split(publish_port, "|");
- if (publishPorts.length == 2) {
- ApiRouteServiceWrapper.getInstance().deleteApiRoute(redis_serviceName,
- redis_serviceVersion, host, publishPorts[0], routeWay);
- ApiRouteServiceWrapper.getInstance().deleteApiRoute(redis_serviceName,
- redis_serviceVersion, host, publishPorts[1], routeWay);
- return;
+
+ /**
+ * @Title saveServiceByProtocol
+ * @Description TODO(按用户注册协议保存服务)
+ * @param microServiceInfo
+ * @param routeWay
+ * @return void
+ * @throws Exception
+ */
+ private void saveServiceByProtocol(MicroServiceFullInfo microServiceInfo, String routeWay) throws Exception {
+ String protocol = microServiceInfo.getProtocol();
+ String routeName =
+ RouteUtil.getRouteNameByns(microServiceInfo.getServiceName(), microServiceInfo.getNamespace());
+
+ switch (protocol) {
+ case RouteUtil.PROTOCOL_UI:
+ IuiRouteInfo[] iuiRouteInfos = this.buildIuiRouteInfo(microServiceInfo, routeName, routeWay);
+ for (int i = 0; i < iuiRouteInfos.length; i++) {
+ IuiRouteServiceWrapper.getInstance().saveIuiRouteInstance(iuiRouteInfos[i], routeWay);
+ }
+ break;
+
+ case RouteUtil.PROTOCOL_REST:
+
+ ApiRouteInfo[] apiRouteInfos = this.buildApiRouteInfo(microServiceInfo, routeName,
+ microServiceInfo.getVersion(), routeWay);
+ for (int i = 0; i < apiRouteInfos.length; i++) {
+ ApiRouteServiceWrapper.getInstance().saveApiRouteInstance(apiRouteInfos[i], routeWay);
+ }
+ break;
+ case RouteUtil.PROTOCOL_HTTP:
+ CustomRouteInfo[] customRouteInfos = this.buildCustomRouteInfo(microServiceInfo,
+ getHttpName(routeName, microServiceInfo.getVersion()), routeWay);
+ for (int i = 0; i < customRouteInfos.length; i++) {
+ CustomRouteServiceWrapper.getInstance().saveCustomRouteInstance(customRouteInfos[i], routeWay);
+ }
+ break;
}
- }
-
- ApiRouteServiceWrapper.getInstance().deleteApiRoute(redis_serviceName, redis_serviceVersion,
- host, publish_port, routeWay);
-
-
-
- } else if (RegExpTestUtil.iuiRouteUrlRegExpTest(url)) {
- // protocol:"UI"
- // 根据url获取服务名
- redis_serviceName = RegExpTestUtil.iuiServiceNameMatch4URL(url);
- if (redis_serviceName == null) {
- LOGGER.error("delete iui Service ByUrl is error:[url]" + url);
- return;
- }
-
- if (RouteUtil.ROUTEWAY_IP.equals(routeWay)) {
- // two ports
- String[] publishPorts = StringUtils.split(publish_port, "|");
- if (publishPorts.length == 2) {
- IuiRouteServiceWrapper.getInstance().deleteIuiRoute(redis_serviceName, host,
- publishPorts[0], routeWay);
- IuiRouteServiceWrapper.getInstance().deleteIuiRoute(redis_serviceName, host,
- publishPorts[1], routeWay);
- return;
+ }
+
+ /**
+ * @Title deleteServiceByProtocol
+ * @Description TODO(按用户注册协议删除服务)
+ * @param microServiceInfo
+ * @param routeWay
+ * @return void
+ */
+ private void deleteServiceByProtocol(MicroServiceFullInfo microServiceInfo, String routeWay) {
+ String protocol = microServiceInfo.getProtocol();
+ String host = getHost(microServiceInfo);
+ String routeName =
+ RouteUtil.getRouteNameByns(microServiceInfo.getServiceName(), microServiceInfo.getNamespace());
+
+ if (RouteUtil.PROTOCOL_UI.equals(protocol)) {
+
+ if (RouteUtil.ROUTEWAY_IP.equals(routeWay)) {
+ // two ports
+ String[] publishPorts = StringUtils.split(microServiceInfo.getPublish_port(), "|");
+ if (publishPorts.length == 2) {
+ IuiRouteServiceWrapper.getInstance().deleteIuiRoute(routeName, host, publishPorts[0], routeWay);
+ IuiRouteServiceWrapper.getInstance().deleteIuiRoute(routeName, host, publishPorts[1], routeWay);
+ return;
+ }
+ }
+
+ IuiRouteServiceWrapper.getInstance().deleteIuiRoute(routeName, host, microServiceInfo.getPublish_port(),
+ routeWay);
+ } else if (RouteUtil.PROTOCOL_REST.equals(protocol)) {
+
+ if (RouteUtil.ROUTEWAY_IP.equals(routeWay)) {
+ // two ports
+ String[] publishPorts = StringUtils.split(microServiceInfo.getPublish_port(), "|");
+ if (publishPorts.length == 2) {
+ ApiRouteServiceWrapper.getInstance().deleteApiRoute(routeName, microServiceInfo.getVersion(), host,
+ publishPorts[0], routeWay);
+ ApiRouteServiceWrapper.getInstance().deleteApiRoute(routeName, microServiceInfo.getVersion(), host,
+ publishPorts[1], routeWay);
+ return;
+ }
+ }
+ ApiRouteServiceWrapper.getInstance().deleteApiRoute(routeName, microServiceInfo.getVersion(), host,
+ microServiceInfo.getPublish_port(), routeWay);
+ } else if (RouteUtil.PROTOCOL_HTTP.equals(protocol)) {
+
+ if (RouteUtil.ROUTEWAY_IP.equals(routeWay)) {
+ // two ports
+ String[] publishPorts = StringUtils.split(microServiceInfo.getPublish_port(), "|");
+ if (publishPorts.length == 2) {
+ CustomRouteServiceWrapper.getInstance().deleteCustomRoute(
+ getHttpName(routeName, microServiceInfo.getVersion()), host, publishPorts[0],
+ routeWay);
+ CustomRouteServiceWrapper.getInstance().deleteCustomRoute(
+ getHttpName(routeName, microServiceInfo.getVersion()), host, publishPorts[1],
+ routeWay);
+ return;
+ }
+ }
+ CustomRouteServiceWrapper.getInstance().deleteCustomRoute(
+ getHttpName(routeName, microServiceInfo.getVersion()), host,
+ microServiceInfo.getPublish_port(), routeWay);
}
- }
+ }
- IuiRouteServiceWrapper.getInstance().deleteIuiRoute(redis_serviceName, host, publish_port,
- routeWay);
+ /**
+ * @Title saveServiceByUrl
+ * @Description TODO(按URL地址判断服务协议并保存到路由表)
+ * @param url
+ * @param microServiceInfo
+ * @param routeWay
+ * @return void
+ * @throws Exception
+ */
+ private void saveServiceByPath(MicroServiceFullInfo microServiceInfo, String routeWay) throws Exception {
+ String redis_serviceName;
+ String path = microServiceInfo.getPath();
+ if (RegExpTestUtil.apiRouteUrlRegExpTest(path)) {
+ // protocol:"REST"
+ String[] serviceKey = RegExpTestUtil.apiServiceNameMatch4URL(path);
+ if (serviceKey == null) {
+ LOGGER.error("save api Service ByUrl is error:[url]" + path);
+ return;
+ }
+ redis_serviceName = serviceKey[0];
+ String redis_serviceVersion = serviceKey[1];
+
+ ApiRouteInfo[] apiRouteInfos =
+ this.buildApiRouteInfo(microServiceInfo, redis_serviceName, redis_serviceVersion, routeWay);
+ for (int i = 0; i < apiRouteInfos.length; i++) {
+ ApiRouteServiceWrapper.getInstance().saveApiRouteInstance(apiRouteInfos[i], routeWay);
+ }
+ } else if (RegExpTestUtil.iuiRouteUrlRegExpTest(path)) {
+ // protocol:"UI"
+ // 根据url获取服务名
+ redis_serviceName = RegExpTestUtil.iuiServiceNameMatch4URL(path);
+ if (redis_serviceName == null) {
+ LOGGER.error("save iui Service ByUrl is error:[url]" + path);
+ return;
+ }
+ IuiRouteInfo[] iuiRouteInfos = this.buildIuiRouteInfo(microServiceInfo, redis_serviceName, routeWay);
+ for (int i = 0; i < iuiRouteInfos.length; i++) {
+ IuiRouteServiceWrapper.getInstance().saveIuiRouteInstance(iuiRouteInfos[i], routeWay);
+ }
+ } else {
+ // protocol:"HTTP";
+ redis_serviceName = path;
+ CustomRouteInfo[] customRouteInfos =
+ this.buildCustomRouteInfo(microServiceInfo, redis_serviceName, routeWay);
+ for (int i = 0; i < customRouteInfos.length; i++) {
+ CustomRouteServiceWrapper.getInstance().saveCustomRouteInstance(customRouteInfos[i], routeWay);
+ }
+ }
+ }
+ /**
+ * @Title deleteServiceByUrl
+ * @Description TODO(按URL地址判断服务协议并从路由表删除)
+ * @param url
+ * @param host
+ * @param publish_port
+ * @param routeWay
+ * @return void
+ */
+ private void deleteServiceByUrl(String url, String host, String publish_port, String routeWay) {
+ // 根据Url格式判断服务类型
+ String redis_serviceName;
+
+ if (RegExpTestUtil.apiRouteUrlRegExpTest(url)) {
+ // protocol:"REST"
+ String[] serviceKey = RegExpTestUtil.apiServiceNameMatch4URL(url);
+ if (serviceKey == null) {
+ LOGGER.error("delete api Service ByUrl is error:[url]" + url);
+ return;
+ }
+
+ redis_serviceName = serviceKey[0];
+ String redis_serviceVersion = serviceKey[1];
+
+ if (RouteUtil.ROUTEWAY_IP.equals(routeWay)) {
+ // two ports
+ String[] publishPorts = StringUtils.split(publish_port, "|");
+ if (publishPorts.length == 2) {
+ ApiRouteServiceWrapper.getInstance().deleteApiRoute(redis_serviceName, redis_serviceVersion, host,
+ publishPorts[0], routeWay);
+ ApiRouteServiceWrapper.getInstance().deleteApiRoute(redis_serviceName, redis_serviceVersion, host,
+ publishPorts[1], routeWay);
+ return;
+ }
+ }
+
+ ApiRouteServiceWrapper.getInstance().deleteApiRoute(redis_serviceName, redis_serviceVersion, host,
+ publish_port, routeWay);
+
+
+
+ } else if (RegExpTestUtil.iuiRouteUrlRegExpTest(url)) {
+ // protocol:"UI"
+ // 根据url获取服务名
+ redis_serviceName = RegExpTestUtil.iuiServiceNameMatch4URL(url);
+ if (redis_serviceName == null) {
+ LOGGER.error("delete iui Service ByUrl is error:[url]" + url);
+ return;
+ }
+
+ if (RouteUtil.ROUTEWAY_IP.equals(routeWay)) {
+ // two ports
+ String[] publishPorts = StringUtils.split(publish_port, "|");
+ if (publishPorts.length == 2) {
+ IuiRouteServiceWrapper.getInstance().deleteIuiRoute(redis_serviceName, host, publishPorts[0],
+ routeWay);
+ IuiRouteServiceWrapper.getInstance().deleteIuiRoute(redis_serviceName, host, publishPorts[1],
+ routeWay);
+ return;
+ }
+ }
+
+ IuiRouteServiceWrapper.getInstance().deleteIuiRoute(redis_serviceName, host, publish_port, routeWay);
- } else {
- // protocol:"HTTP";
- redis_serviceName = url;
- if (RouteUtil.ROUTEWAY_IP.equals(routeWay)) {
- // two ports
- String[] publishPorts = StringUtils.split(publish_port, "|");
- if (publishPorts.length == 2) {
- CustomRouteServiceWrapper.getInstance().deleteCustomRoute(redis_serviceName, host,
- publishPorts[0], routeWay);
- CustomRouteServiceWrapper.getInstance().deleteCustomRoute(redis_serviceName, host,
- publishPorts[1], routeWay);
- return;
+ } else {
+ // protocol:"HTTP";
+ redis_serviceName = url;
+
+ if (RouteUtil.ROUTEWAY_IP.equals(routeWay)) {
+ // two ports
+ String[] publishPorts = StringUtils.split(publish_port, "|");
+ if (publishPorts.length == 2) {
+ CustomRouteServiceWrapper.getInstance().deleteCustomRoute(redis_serviceName, host, publishPorts[0],
+ routeWay);
+ CustomRouteServiceWrapper.getInstance().deleteCustomRoute(redis_serviceName, host, publishPorts[1],
+ routeWay);
+ return;
+ }
+ }
+
+ CustomRouteServiceWrapper.getInstance().deleteCustomRoute(redis_serviceName, host, publish_port, routeWay);
}
- }
- CustomRouteServiceWrapper.getInstance().deleteCustomRoute(redis_serviceName, host,
- publish_port, routeWay);
}
- }
+ /**
+ * @Title getCustomName
+ * @Description TODO(获取HTTP服务路由名)
+ * @param routeName
+ * @param version
+ * @return
+ * @return String
+ */
+ private String getHttpName(String routeName, String version) {
+ if (!routeName.startsWith("/")) {
+ routeName = "/" + routeName;
+ }
- /**
- * @Title getCustomName
- * @Description TODO(获取HTTP服务路由名)
- * @param routeName
- * @param version
- * @return
- * @return String
- */
- private String getHttpName(String routeName, String version) {
- if (!routeName.startsWith("/")) {
- routeName = "/" + routeName;
+ if (StringUtils.isNotBlank(version)) {
+ routeName += "/" + version;
+ }
+ return routeName;
}
- if (StringUtils.isNotBlank(version)) {
- routeName += "/" + version;
- }
- return routeName;
- }
+ private String getHost(MicroServiceFullInfo microServiceInfo) {
+ String host;
+ if (StringUtils.isNotBlank(microServiceInfo.getHost())) {
+ host = microServiceInfo.getHost().toLowerCase();
+ } else {
+ // host为空,取默认规则 服务名-ns
+ host = microServiceInfo.getServiceName().toLowerCase();
+ }
- private String getHost(MicroServiceFullInfo microServiceInfo) {
- String host;
- if (StringUtils.isNotBlank(microServiceInfo.getHost())) {
- host = microServiceInfo.getHost().toLowerCase();
- } else {
- // host为空,取默认规则 服务名-ns
- host = microServiceInfo.getServiceName().toLowerCase();
+ return host;
}
- return host;
- }
-
-
-
- @Override
- public void onChange(String serviceName, String version, MicroServiceFullInfo microServiceInfo)
- throws Exception {
- // TODO Auto-generated method stub
-
- if (RouteUtil.PROTOCOL_UI.equals(microServiceInfo.getProtocol())) {
- IuiRouteInfo[] iuiRouteInfos =
- this.buildIuiRouteInfo(microServiceInfo, serviceName, RouteUtil.ROUTEWAY_IP);
- for (int i = 0; i < iuiRouteInfos.length; i++) {
- IuiRouteServiceWrapper.getInstance().saveIuiRouteInstance(iuiRouteInfos[i],
- RouteUtil.ROUTEWAY_IP);
- }
- } else if (RouteUtil.PROTOCOL_REST.equals(microServiceInfo.getProtocol())) {
- ApiRouteInfo[] apiRouteInfos =
- this.buildApiRouteInfo(microServiceInfo, serviceName, version, RouteUtil.ROUTEWAY_IP);
- for (int i = 0; i < apiRouteInfos.length; i++) {
- ApiRouteServiceWrapper.getInstance().saveApiRouteInstance(apiRouteInfos[i],
- RouteUtil.ROUTEWAY_IP);
- }
- } else if (RouteUtil.PROTOCOL_HTTP.equals(microServiceInfo.getProtocol())) {
- if (!serviceName.startsWith("/")) {
- serviceName = "/" + serviceName;
- }
- CustomRouteInfo[] customRouteInfos =
- this.buildCustomRouteInfo(microServiceInfo, serviceName, RouteUtil.ROUTEWAY_IP);
- for (int i = 0; i < customRouteInfos.length; i++) {
- CustomRouteServiceWrapper.getInstance().saveCustomRouteInstance(customRouteInfos[i],
- RouteUtil.ROUTEWAY_IP);
- }
- }
- }
- @Override
- public void onStatusChange(String serviceName, String version, String host, String protocol,
- String publish_port, String status) {
+ @Override
+ public void onChange(String serviceName, String version, MicroServiceFullInfo microServiceInfo) throws Exception {
+ // TODO Auto-generated method stub
+
+ if (RouteUtil.PROTOCOL_UI.equals(microServiceInfo.getProtocol())) {
+ IuiRouteInfo[] iuiRouteInfos = this.buildIuiRouteInfo(microServiceInfo, serviceName, RouteUtil.ROUTEWAY_IP);
+ for (int i = 0; i < iuiRouteInfos.length; i++) {
+ IuiRouteServiceWrapper.getInstance().saveIuiRouteInstance(iuiRouteInfos[i], RouteUtil.ROUTEWAY_IP);
+ }
+ } else if (RouteUtil.PROTOCOL_REST.equals(microServiceInfo.getProtocol())) {
+ ApiRouteInfo[] apiRouteInfos =
+ this.buildApiRouteInfo(microServiceInfo, serviceName, version, RouteUtil.ROUTEWAY_IP);
+ for (int i = 0; i < apiRouteInfos.length; i++) {
+ ApiRouteServiceWrapper.getInstance().saveApiRouteInstance(apiRouteInfos[i], RouteUtil.ROUTEWAY_IP);
+ }
+ } else if (RouteUtil.PROTOCOL_HTTP.equals(microServiceInfo.getProtocol())) {
+ if (!serviceName.startsWith("/")) {
+ serviceName = "/" + serviceName;
+ }
+ CustomRouteInfo[] customRouteInfos =
+ this.buildCustomRouteInfo(microServiceInfo, serviceName, RouteUtil.ROUTEWAY_IP);
+ for (int i = 0; i < customRouteInfos.length; i++) {
+ CustomRouteServiceWrapper.getInstance().saveCustomRouteInstance(customRouteInfos[i],
+ RouteUtil.ROUTEWAY_IP);
+ }
+ }
+ }
- // 获取服务的host
- if (StringUtils.isBlank(host)) {
- host = serviceName.toLowerCase();
- }
+ @Override
+ public void onStatusChange(String serviceName, String version, String host, String protocol, String publish_port,
+ String status) {
- if (RouteUtil.PROTOCOL_UI.equals(protocol)) {
+ // 获取服务的host
- IuiRouteServiceWrapper.getInstance().updateIuiRouteStatus(serviceName, host, publish_port,
- status, RouteUtil.ROUTEWAY_IP);
+ if (StringUtils.isBlank(host)) {
+ host = serviceName.toLowerCase();
+ }
- } else if (RouteUtil.PROTOCOL_REST.equals(protocol)) {
- ApiRouteServiceWrapper.getInstance().updateApiRouteStatus(serviceName, version, host,
- publish_port, status, RouteUtil.ROUTEWAY_IP);
+ if (RouteUtil.PROTOCOL_UI.equals(protocol)) {
- } else if (RouteUtil.PROTOCOL_HTTP.equals(protocol)) {
- if (!serviceName.startsWith("/")) {
- serviceName = "/" + serviceName;
- }
- CustomRouteServiceWrapper.getInstance().updateCustomRouteStatus(serviceName, host,
- publish_port, status, RouteUtil.ROUTEWAY_IP);
- }
+ IuiRouteServiceWrapper.getInstance().updateIuiRouteStatus(serviceName, host, publish_port, status,
+ RouteUtil.ROUTEWAY_IP);
+ } else if (RouteUtil.PROTOCOL_REST.equals(protocol)) {
+ ApiRouteServiceWrapper.getInstance().updateApiRouteStatus(serviceName, version, host, publish_port, status,
+ RouteUtil.ROUTEWAY_IP);
- }
+ } else if (RouteUtil.PROTOCOL_HTTP.equals(protocol)) {
+ if (!serviceName.startsWith("/")) {
+ serviceName = "/" + serviceName;
+ }
+ CustomRouteServiceWrapper.getInstance().updateCustomRouteStatus(serviceName, host, publish_port, status,
+ RouteUtil.ROUTEWAY_IP);
+ }
- private boolean buildRouteHttpProtocol(MicroServiceFullInfo microServiceInfo, String routeWay) {
- // Portal协议处理
- if (RouteUtil.CUSTOM_PORTAL.equals(microServiceInfo.getCustom())) {
- if (RouteUtil.ROUTEWAY_DOMAIN.equals(routeWay)) {
- return true;
- } else {
- return false;
- }
}
- // 自定义开启SSL处理
- return microServiceInfo.isEnable_ssl();
+ private boolean buildRouteHttpProtocol(MicroServiceFullInfo microServiceInfo, String routeWay) {
+
+ // Portal协议处理
+ if (RouteUtil.CUSTOM_PORTAL.equals(microServiceInfo.getCustom())) {
+ if (RouteUtil.ROUTEWAY_DOMAIN.equals(routeWay)) {
+ return true;
+ } else {
+ return false;
+ }
+ }
- }
+ // 自定义开启SSL处理
+ return microServiceInfo.isEnable_ssl();
+
+ }
- private RouteServer[] buildRouteNodes(MicroServiceFullInfo microServiceInfo, String routeWay) {
+ private RouteServer[] buildRouteNodes(MicroServiceFullInfo microServiceInfo, String routeWay) {
+
+ // 针对custom=portal场景的域名路由使用apigateway发布地址作为node
+ if (RouteUtil.CUSTOM_PORTAL.equals(microServiceInfo.getCustom())) {
+ if (RouteUtil.ROUTEWAY_DOMAIN.equals(routeWay)) {
+
+ String discoverServiceName = RouteUtil.getRouteNameByns(microServiceInfo.getServiceName(),
+ microServiceInfo.getNamespace());
+ List<Node> publishNodes = getPublishNodes(discoverServiceName, microServiceInfo.getVersion(),
+ microServiceInfo.getNamespace());
+ if (publishNodes != null && publishNodes.size() > 0) {
+ RouteServer[] routeServers = new RouteServer[publishNodes.size()];
+ int i = 0;
+ for (Node node : publishNodes) {
+ RouteServer routeServer = new RouteServer(node.getIp(), node.getPort());
+ routeServers[i] = routeServer;
+ i++;
+ }
+ return routeServers;
+ }
+ }
+ }
- // 针对custom=portal场景的域名路由使用apigateway发布地址作为node
- if (RouteUtil.CUSTOM_PORTAL.equals(microServiceInfo.getCustom())) {
- if (RouteUtil.ROUTEWAY_DOMAIN.equals(routeWay)) {
- String discoverServiceName =
- RouteUtil.getRouteNameByns(microServiceInfo.getServiceName(),
- microServiceInfo.getNamespace());
- List<Node> publishNodes =
- getPublishNodes(discoverServiceName, microServiceInfo.getVersion(),
- microServiceInfo.getNamespace());
- if (publishNodes != null && publishNodes.size() > 0) {
- RouteServer[] routeServers = new RouteServer[publishNodes.size()];
- int i = 0;
- for (Node node : publishNodes) {
+ Set<Node> nodes = microServiceInfo.getNodes();
+ RouteServer[] routeServers = new RouteServer[nodes.size()];
+ int n = 0;
+ for (Node node : nodes) {
RouteServer routeServer = new RouteServer(node.getIp(), node.getPort());
- routeServers[i] = routeServer;
- i++;
- }
- return routeServers;
+ routeServers[n] = routeServer;
+ n++;
}
- }
- }
+ return routeServers;
- Set<Node> nodes = microServiceInfo.getNodes();
- RouteServer[] routeServers = new RouteServer[nodes.size()];
- int n = 0;
- for (Node node : nodes) {
- RouteServer routeServer = new RouteServer(node.getIp(), node.getPort());
- routeServers[n] = routeServer;
- n++;
}
- return routeServers;
-
- }
+ /**
+ * From MicroServiceInfo to ApiRouteInfo
+ *
+ * @param microServiceInfo
+ * @return
+ */
+ private ApiRouteInfo[] buildApiRouteInfo(MicroServiceFullInfo microServiceInfo, String redis_serviceName,
+ String redis_version, String routeWay) {
- /**
- * From MicroServiceInfo to ApiRouteInfo
- *
- * @param microServiceInfo
- * @return
- */
- private ApiRouteInfo[] buildApiRouteInfo(MicroServiceFullInfo microServiceInfo,
- String redis_serviceName, String redis_version, String routeWay) {
+ ApiRouteInfo apiRouteInfo = new ApiRouteInfo();
+ apiRouteInfo.setUrl(microServiceInfo.getUrl());
- ApiRouteInfo apiRouteInfo = new ApiRouteInfo();
- apiRouteInfo.setUrl(microServiceInfo.getUrl());
+ apiRouteInfo.setServers(buildRouteNodes(microServiceInfo, routeWay));
- apiRouteInfo.setServers(buildRouteNodes(microServiceInfo, routeWay));
+ apiRouteInfo.setVisualRange(RouteUtil.getVisualRangeByRouter(microServiceInfo.getVisualRange()));
- apiRouteInfo.setVisualRange(RouteUtil.getVisualRangeByRouter(microServiceInfo.getVisualRange()));
+ if ("ip_hash".equals(microServiceInfo.getLb_policy())) {
+ apiRouteInfo.setUseOwnUpstream("1");
+ }
- if ("ip_hash".equals(microServiceInfo.getLb_policy())) {
- apiRouteInfo.setUseOwnUpstream("1");
- }
+ apiRouteInfo.setConsulServiceName(microServiceInfo.getServiceName());
+ apiRouteInfo.setServiceName(redis_serviceName);
+ apiRouteInfo.setVersion(redis_version);
+ apiRouteInfo.setApiJson(microServiceInfo.getUrl() + "/swagger.json");
+ apiRouteInfo.setMetricsUrl("/admin/metrics");
+ apiRouteInfo.setEnable_ssl(buildRouteHttpProtocol(microServiceInfo, routeWay));
+ // 默认 HttpProtocol和PublishProtocol=http
+ if (apiRouteInfo.isEnable_ssl()) {
+ apiRouteInfo.setPublishProtocol("https");
+ }
- apiRouteInfo.setConsulServiceName(microServiceInfo.getServiceName());
- apiRouteInfo.setServiceName(redis_serviceName);
- apiRouteInfo.setVersion(redis_version);
- apiRouteInfo.setApiJson(microServiceInfo.getUrl() + "/swagger.json");
- apiRouteInfo.setMetricsUrl("/admin/metrics");
- apiRouteInfo.setEnable_ssl(buildRouteHttpProtocol(microServiceInfo, routeWay));
- // 默认 HttpProtocol和PublishProtocol=http
- if (apiRouteInfo.isEnable_ssl()) {
- apiRouteInfo.setPublishProtocol("https");
- }
+ // 获取服务的host
+ String host = getHost(microServiceInfo);
- // 获取服务的host
- String host = getHost(microServiceInfo);
+ apiRouteInfo.setHost(host.toLowerCase());
+ apiRouteInfo.setNamespace(microServiceInfo.getNamespace());
- apiRouteInfo.setHost(host.toLowerCase());
- apiRouteInfo.setNamespace(microServiceInfo.getNamespace());
+ if (RouteUtil.ROUTEWAY_IP.equals(routeWay)) {
- if (RouteUtil.ROUTEWAY_IP.equals(routeWay)) {
+ if (StringUtils.isNotBlank(microServiceInfo.getPublish_port())) {
+ apiRouteInfo.setPublishProtocol("https");
+ }
- if (StringUtils.isNotBlank(microServiceInfo.getPublish_port())) {
- apiRouteInfo.setPublishProtocol("https");
- }
+ // 获取服务的发布端口(支持多端口格式:https|http)
+ String[] publishPorts = StringUtils.split(microServiceInfo.getPublish_port(), "|");
+ if (publishPorts.length == 2) {
+ apiRouteInfo.setPublishProtocol("https");
+ apiRouteInfo.setPublish_port(publishPorts[0]);
- // 获取服务的发布端口(支持多端口格式:https|http)
- String[] publishPorts = StringUtils.split(microServiceInfo.getPublish_port(), "|");
- if (publishPorts.length == 2) {
- apiRouteInfo.setPublishProtocol("https");
- apiRouteInfo.setPublish_port(publishPorts[0]);
+ try {
+ ApiRouteInfo apiRouteInfo_http = (ApiRouteInfo) apiRouteInfo.clone();
+ apiRouteInfo.setPublishProtocol("http");
+ apiRouteInfo.setPublish_port(publishPorts[1]);
+ return new ApiRouteInfo[] {apiRouteInfo, apiRouteInfo_http};
+ } catch (CloneNotSupportedException e) {
+ LOGGER.error("CLONE is wrong:" + apiRouteInfo);
+ return new ApiRouteInfo[] {apiRouteInfo};
+ }
- try {
- ApiRouteInfo apiRouteInfo_http = (ApiRouteInfo) apiRouteInfo.clone();
- apiRouteInfo.setPublishProtocol("http");
- apiRouteInfo.setPublish_port(publishPorts[1]);
- return new ApiRouteInfo[] {apiRouteInfo, apiRouteInfo_http};
- } catch (CloneNotSupportedException e) {
- LOGGER.error("CLONE is wrong:" + apiRouteInfo);
- return new ApiRouteInfo[] {apiRouteInfo};
+ }
}
- }
- }
-
- apiRouteInfo.setPublish_port(microServiceInfo.getPublish_port());
- return new ApiRouteInfo[] {apiRouteInfo};
+ apiRouteInfo.setPublish_port(microServiceInfo.getPublish_port());
+ return new ApiRouteInfo[] {apiRouteInfo};
- }
+ }
- /**
- * From MicroServiceInfo to CustomRouteInfo
- *
- * @param microServiceInfo
- * @return
- */
- private CustomRouteInfo[] buildCustomRouteInfo(MicroServiceFullInfo microServiceInfo,
- String redis_serviceName, String routeWay) {
+ /**
+ * From MicroServiceInfo to CustomRouteInfo
+ *
+ * @param microServiceInfo
+ * @return
+ */
+ private CustomRouteInfo[] buildCustomRouteInfo(MicroServiceFullInfo microServiceInfo, String redis_serviceName,
+ String routeWay) {
- CustomRouteInfo customRouteInfo = new CustomRouteInfo();
- customRouteInfo.setUrl(microServiceInfo.getUrl());
+ CustomRouteInfo customRouteInfo = new CustomRouteInfo();
+ customRouteInfo.setUrl(microServiceInfo.getUrl());
- customRouteInfo.setServers(buildRouteNodes(microServiceInfo, routeWay));
+ customRouteInfo.setServers(buildRouteNodes(microServiceInfo, routeWay));
- customRouteInfo.setVisualRange(RouteUtil.getVisualRangeByRouter(microServiceInfo.getVisualRange()));
+ customRouteInfo.setVisualRange(RouteUtil.getVisualRangeByRouter(microServiceInfo.getVisualRange()));
- if ("ip_hash".equals(microServiceInfo.getLb_policy())) {
- customRouteInfo.setUseOwnUpstream("1");
- }
+ if ("ip_hash".equals(microServiceInfo.getLb_policy())) {
+ customRouteInfo.setUseOwnUpstream("1");
+ }
- customRouteInfo.setConsulServiceName(microServiceInfo.getServiceName());
- customRouteInfo.setServiceName(redis_serviceName);
+ customRouteInfo.setConsulServiceName(microServiceInfo.getServiceName());
+ customRouteInfo.setServiceName(redis_serviceName);
- // 获取服务的host
- String host = getHost(microServiceInfo);
+ // 获取服务的host
+ String host = getHost(microServiceInfo);
- customRouteInfo.setHost(host.toLowerCase());
- customRouteInfo.setNamespace(microServiceInfo.getNamespace());
- customRouteInfo.setEnable_ssl(buildRouteHttpProtocol(microServiceInfo, routeWay));
+ customRouteInfo.setHost(host.toLowerCase());
+ customRouteInfo.setNamespace(microServiceInfo.getNamespace());
+ customRouteInfo.setEnable_ssl(buildRouteHttpProtocol(microServiceInfo, routeWay));
- if (customRouteInfo.isEnable_ssl()) {
- customRouteInfo.setPublishProtocol("https");
- }
+ if (customRouteInfo.isEnable_ssl()) {
+ customRouteInfo.setPublishProtocol("https");
+ }
- if (RouteUtil.ROUTEWAY_IP.equals(routeWay)) {
- if (StringUtils.isNotBlank(microServiceInfo.getPublish_port())) {
- customRouteInfo.setPublishProtocol("https");
- }
-
- String[] publishPorts = StringUtils.split(microServiceInfo.getPublish_port(), "|");
- if (publishPorts.length == 2) {
- // 获取服务的发布端口(支持多端口格式:https|http)
- customRouteInfo.setPublishProtocol("https");
- customRouteInfo.setPublish_port(publishPorts[0]);
-
- try {
- CustomRouteInfo customRouteInfo_http = (CustomRouteInfo) customRouteInfo.clone();
- customRouteInfo.setPublishProtocol("http");
- customRouteInfo.setPublish_port(publishPorts[1]);
- return new CustomRouteInfo[] {customRouteInfo, customRouteInfo_http};
- } catch (CloneNotSupportedException e) {
- LOGGER.error("CLONE is wrong:" + customRouteInfo);
- return new CustomRouteInfo[] {customRouteInfo};
+ if (RouteUtil.ROUTEWAY_IP.equals(routeWay)) {
+ if (StringUtils.isNotBlank(microServiceInfo.getPublish_port())) {
+ customRouteInfo.setPublishProtocol("https");
+ }
+
+ String[] publishPorts = StringUtils.split(microServiceInfo.getPublish_port(), "|");
+ if (publishPorts.length == 2) {
+ // 获取服务的发布端口(支持多端口格式:https|http)
+ customRouteInfo.setPublishProtocol("https");
+ customRouteInfo.setPublish_port(publishPorts[0]);
+
+ try {
+ CustomRouteInfo customRouteInfo_http = (CustomRouteInfo) customRouteInfo.clone();
+ customRouteInfo.setPublishProtocol("http");
+ customRouteInfo.setPublish_port(publishPorts[1]);
+ return new CustomRouteInfo[] {customRouteInfo, customRouteInfo_http};
+ } catch (CloneNotSupportedException e) {
+ LOGGER.error("CLONE is wrong:" + customRouteInfo);
+ return new CustomRouteInfo[] {customRouteInfo};
+ }
+
+ }
}
- }
- }
+ customRouteInfo.setPublish_port(microServiceInfo.getPublish_port());
+ return new CustomRouteInfo[] {customRouteInfo};
+ }
- customRouteInfo.setPublish_port(microServiceInfo.getPublish_port());
- return new CustomRouteInfo[] {customRouteInfo};
- }
+ /**
+ * From MicroServiceInfo to IuiRouteInfo
+ *
+ * @param microServiceInfo
+ * @return
+ */
+ private IuiRouteInfo[] buildIuiRouteInfo(MicroServiceFullInfo microServiceInfo, String redis_serviceName,
+ String routeWay) {
- /**
- * From MicroServiceInfo to IuiRouteInfo
- *
- * @param microServiceInfo
- * @return
- */
- private IuiRouteInfo[] buildIuiRouteInfo(MicroServiceFullInfo microServiceInfo,
- String redis_serviceName, String routeWay) {
+ IuiRouteInfo iuiRouteInfo = new IuiRouteInfo();
+ iuiRouteInfo.setUrl(microServiceInfo.getUrl());
- IuiRouteInfo iuiRouteInfo = new IuiRouteInfo();
- iuiRouteInfo.setUrl(microServiceInfo.getUrl());
+ iuiRouteInfo.setServers(buildRouteNodes(microServiceInfo, routeWay));
- iuiRouteInfo.setServers(buildRouteNodes(microServiceInfo, routeWay));
+ iuiRouteInfo.setVisualRange(RouteUtil.getVisualRangeByRouter(microServiceInfo.getVisualRange()));
- iuiRouteInfo.setVisualRange(RouteUtil.getVisualRangeByRouter(microServiceInfo.getVisualRange()));
+ if ("ip_hash".equals(microServiceInfo.getLb_policy())) {
+ iuiRouteInfo.setUseOwnUpstream("1");
+ }
- if ("ip_hash".equals(microServiceInfo.getLb_policy())) {
- iuiRouteInfo.setUseOwnUpstream("1");
- }
+ iuiRouteInfo.setConsulServiceName(microServiceInfo.getServiceName());
+ iuiRouteInfo.setServiceName(redis_serviceName);
- iuiRouteInfo.setConsulServiceName(microServiceInfo.getServiceName());
- iuiRouteInfo.setServiceName(redis_serviceName);
+ // 获取服务的host
+ String host = getHost(microServiceInfo);
- // 获取服务的host
- String host = getHost(microServiceInfo);
+ iuiRouteInfo.setHost(host.toLowerCase());
+ iuiRouteInfo.setNamespace(microServiceInfo.getNamespace());
+ iuiRouteInfo.setEnable_ssl(buildRouteHttpProtocol(microServiceInfo, routeWay));
+ if (iuiRouteInfo.isEnable_ssl()) {
+ iuiRouteInfo.setPublishProtocol("https");
+ }
- iuiRouteInfo.setHost(host.toLowerCase());
- iuiRouteInfo.setNamespace(microServiceInfo.getNamespace());
- iuiRouteInfo.setEnable_ssl(buildRouteHttpProtocol(microServiceInfo, routeWay));
- if (iuiRouteInfo.isEnable_ssl()) {
- iuiRouteInfo.setPublishProtocol("https");
+ if (RouteUtil.ROUTEWAY_IP.equals(routeWay)) {
+
+ if (StringUtils.isNotBlank(microServiceInfo.getPublish_port())) {
+ iuiRouteInfo.setPublishProtocol("https");
+ }
+
+ String[] publishPorts = StringUtils.split(microServiceInfo.getPublish_port(), "|");
+ if (publishPorts.length == 2) {
+ // 获取服务的发布端口(支持多端口格式:https|http)
+ iuiRouteInfo.setPublishProtocol("https");
+ iuiRouteInfo.setPublish_port(publishPorts[0]);
+
+ try {
+ IuiRouteInfo iuiRouteInfo_http = (IuiRouteInfo) iuiRouteInfo.clone();
+ iuiRouteInfo.setPublishProtocol("http");
+ iuiRouteInfo.setPublish_port(publishPorts[1]);
+ return new IuiRouteInfo[] {iuiRouteInfo, iuiRouteInfo_http};
+ } catch (CloneNotSupportedException e) {
+ LOGGER.error("CLONE is wrong:" + iuiRouteInfo);
+ return new IuiRouteInfo[] {iuiRouteInfo};
+ }
+
+ }
+ }
+ iuiRouteInfo.setPublish_port(microServiceInfo.getPublish_port());
+ return new IuiRouteInfo[] {iuiRouteInfo};
}
- if (RouteUtil.ROUTEWAY_IP.equals(routeWay)) {
-
- if (StringUtils.isNotBlank(microServiceInfo.getPublish_port())) {
- iuiRouteInfo.setPublishProtocol("https");
- }
-
- String[] publishPorts = StringUtils.split(microServiceInfo.getPublish_port(), "|");
- if (publishPorts.length == 2) {
- // 获取服务的发布端口(支持多端口格式:https|http)
- iuiRouteInfo.setPublishProtocol("https");
- iuiRouteInfo.setPublish_port(publishPorts[0]);
-
- try {
- IuiRouteInfo iuiRouteInfo_http = (IuiRouteInfo) iuiRouteInfo.clone();
- iuiRouteInfo.setPublishProtocol("http");
- iuiRouteInfo.setPublish_port(publishPorts[1]);
- return new IuiRouteInfo[] {iuiRouteInfo, iuiRouteInfo_http};
- } catch (CloneNotSupportedException e) {
- LOGGER.error("CLONE is wrong:" + iuiRouteInfo);
- return new IuiRouteInfo[] {iuiRouteInfo};
- }
- }
- }
- iuiRouteInfo.setPublish_port(microServiceInfo.getPublish_port());
- return new IuiRouteInfo[] {iuiRouteInfo};
- }
+ private List<Node> getPublishNodes(String discoverServiceName, String version, String namespace) {
+ List<Node> nodes = new ArrayList<Node>();
+ if (StringUtils.isBlank(version)) {
+ version = "null";
+ }
- private List<Node> getPublishNodes(String discoverServiceName, String version, String namespace) {
- List<Node> nodes = new ArrayList<Node>();
+ DiscoverInfo discoverInfo = ConfigUtil.getInstance().getDiscoverInfo();
- if (StringUtils.isBlank(version)) {
- version = "null";
- }
+ String allpublishaddressUrl = (new StringBuilder().append("http://").append(discoverInfo.toString())
+ .append(RouteUtil.MSB_ROUTE_URL).append("/").append(discoverServiceName).append("/version/")
+ .append(version).append("/allpublishaddress?namespace=").append(namespace)
+ .append("&visualRange=0")).toString();
- DiscoverInfo discoverInfo = ConfigUtil.getInstance().getDiscoverInfo();
-
- String allpublishaddressUrl =
- (new StringBuilder().append("http://").append(discoverInfo.toString())
- .append(RouteUtil.MSB_ROUTE_URL).append("/").append(discoverServiceName)
- .append("/version/").append(version).append("/allpublishaddress?namespace=")
- .append(namespace).append("&visualRange=0")).toString();
-
- String resultJson = HttpClientUtil.httpGet(allpublishaddressUrl);
- List<PublishFullAddress> publishFullAddressList =
- JacksonJsonUtil
- .jsonToListBean(resultJson, new TypeReference<List<PublishFullAddress>>() {});
- if (publishFullAddressList != null && publishFullAddressList.size() > 0) {
- for (PublishFullAddress publishFullAddress : publishFullAddressList) {
- if (StringUtils.isNotBlank(publishFullAddress.getIp())
- && "https".equals(publishFullAddress.getPublish_protocol())) {
- nodes.add(new Node(publishFullAddress.getIp(), publishFullAddress.getPort()));
+ String resultJson = HttpClientUtil.httpGet(allpublishaddressUrl);
+ List<PublishFullAddress> publishFullAddressList =
+ JacksonJsonUtil.jsonToListBean(resultJson, new TypeReference<List<PublishFullAddress>>() {});
+ if (publishFullAddressList != null && publishFullAddressList.size() > 0) {
+ for (PublishFullAddress publishFullAddress : publishFullAddressList) {
+ if (StringUtils.isNotBlank(publishFullAddress.getIp())
+ && "https".equals(publishFullAddress.getPublish_protocol())) {
+ nodes.add(new Node(publishFullAddress.getIp(), publishFullAddress.getPort()));
+ }
+
+ }
}
- }
+ return nodes;
}
- return nodes;
- }
-
}