You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2020/04/10 06:51:01 UTC
[servicecomb-java-chassis] 02/02: [SCB-1848] refactor: modify
config-kie module to use the new mechanism to intialize client
This is an automated email from the ASF dual-hosted git repository.
liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
commit e2d965b6e7f72e49eb753105aec08abe6767ab54
Author: liubao <bi...@qq.com>
AuthorDate: Thu Apr 9 17:35:12 2020 +0800
[SCB-1848] refactor: modify config-kie module to use the new mechanism to intialize client
---
.../config/client/ConfigCenterConfig.java | 27 ++-----
.../client/ConfigCenterHttpClientOptionsSPI.java | 7 ++
.../kie/client/ConfigKieHttpClientOptionsSPI.java} | 41 ++++++-----
.../servicecomb/config/kie/client/KieClient.java | 82 +++++++++-------------
.../servicecomb/config/kie/client/KieConfig.java | 47 +++++++++++++
.../config/kie/client/TestKieClient.java | 9 +--
.../servicecomb/config/kie/client/TestKieUtil.java | 18 ++++-
.../servicecomb/foundation/vertx/VertxConst.java | 32 +++++++++
.../vertx/client/http/HttpClientOptionsSPI.java | 5 ++
.../foundation/vertx/client/http/HttpClients.java | 3 +-
.../client/http/RegistryHttpClientOptionsSPI.java | 6 ++
.../config/ServiceRegistryConfig.java | 12 ----
.../config/ServiceRegistryConfigBuilder.java | 11 +--
.../client/HttpTransportHttpClientOptionsSPI.java | 7 ++
14 files changed, 194 insertions(+), 113 deletions(-)
diff --git a/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/client/ConfigCenterConfig.java b/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/client/ConfigCenterConfig.java
index e71e548..e0ff19a 100644
--- a/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/client/ConfigCenterConfig.java
+++ b/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/client/ConfigCenterConfig.java
@@ -24,6 +24,7 @@ import java.util.List;
import org.apache.servicecomb.deployment.Deployment;
import org.apache.servicecomb.deployment.DeploymentProvider;
+import org.apache.servicecomb.foundation.vertx.VertxConst;
import com.google.common.base.Joiner;
import com.netflix.config.ConcurrentCompositeConfiguration;
@@ -59,18 +60,6 @@ public final class ConfigCenterConfig {
private static final String INSTANCE_TAGS = "instance_description.properties.tags";
- public static final String PROXY_PRE_NAME = "servicecomb.proxy.";
-
- public static final String PROXY_ENABLE = PROXY_PRE_NAME + "enable";
-
- public static final String PROXY_HOST = PROXY_PRE_NAME + "host";
-
- public static final String PROXY_PORT = PROXY_PRE_NAME + "port";
-
- public static final String PROXY_USERNAME = PROXY_PRE_NAME + "username";
-
- public static final String PROXY_PASSWD = PROXY_PRE_NAME + "passwd";
-
public static final String CONNECTION_TIME_OUT = "servicecomb.config.client.timeout.connection";
public static final String EVENT_LOOP_SIZE = "servicecomb.config.client.eventLoopSize";
@@ -87,8 +76,6 @@ public final class ConfigCenterConfig {
private static final int DEFAULT_FIRST_REFRESH_INTERVAL = 0;
- private static final int DEFAULT_TIMEOUT_IN_MS = 30000;
-
private ConfigCenterConfig() {
}
@@ -96,7 +83,7 @@ public final class ConfigCenterConfig {
finalConfig = config;
}
- public ConcurrentCompositeConfiguration getConcurrentCompositeConfiguration() {
+ public static ConcurrentCompositeConfiguration getConcurrentCompositeConfiguration() {
return finalConfig;
}
@@ -133,23 +120,23 @@ public final class ConfigCenterConfig {
}
public Boolean isProxyEnable() {
- return finalConfig.getBoolean(PROXY_ENABLE, false);
+ return finalConfig.getBoolean(VertxConst.PROXY_ENABLE, false);
}
public String getProxyHost() {
- return finalConfig.getString(PROXY_HOST, "127.0.0.1");
+ return finalConfig.getString(VertxConst.PROXY_HOST, "127.0.0.1");
}
public int getProxyPort() {
- return finalConfig.getInt(PROXY_PORT, 8080);
+ return finalConfig.getInt(VertxConst.PROXY_PORT, 8080);
}
public String getProxyUsername() {
- return finalConfig.getString(PROXY_USERNAME, null);
+ return finalConfig.getString(VertxConst.PROXY_USERNAME, null);
}
public String getProxyPasswd() {
- return finalConfig.getString(PROXY_PASSWD, null);
+ return finalConfig.getString(VertxConst.PROXY_PASSWD, null);
}
@SuppressWarnings("unchecked")
diff --git a/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/client/ConfigCenterHttpClientOptionsSPI.java b/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/client/ConfigCenterHttpClientOptionsSPI.java
index 3b3c4d8..15a2400 100644
--- a/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/client/ConfigCenterHttpClientOptionsSPI.java
+++ b/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/client/ConfigCenterHttpClientOptionsSPI.java
@@ -21,6 +21,8 @@ import org.apache.servicecomb.deployment.Deployment;
import org.apache.servicecomb.deployment.DeploymentProvider;
import org.apache.servicecomb.foundation.vertx.client.http.HttpClientOptionsSPI;
+import com.netflix.config.ConcurrentCompositeConfiguration;
+
import io.vertx.core.VertxOptions;
import io.vertx.core.http.HttpClientOptions;
import io.vertx.core.http.HttpVersion;
@@ -49,6 +51,11 @@ public class ConfigCenterHttpClientOptionsSPI implements HttpClientOptionsSPI {
}
@Override
+ public ConcurrentCompositeConfiguration getConfigReader() {
+ return ConfigCenterConfig.getConcurrentCompositeConfiguration();
+ }
+
+ @Override
public int getEventLoopPoolSize() {
return ConfigCenterConfig.INSTANCE.getEventLoopSize();
}
diff --git a/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/client/ConfigCenterHttpClientOptionsSPI.java b/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/client/ConfigKieHttpClientOptionsSPI.java
similarity index 74%
copy from dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/client/ConfigCenterHttpClientOptionsSPI.java
copy to dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/client/ConfigKieHttpClientOptionsSPI.java
index 3b3c4d8..6921a56 100644
--- a/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/client/ConfigCenterHttpClientOptionsSPI.java
+++ b/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/client/ConfigKieHttpClientOptionsSPI.java
@@ -15,18 +15,18 @@
* limitations under the License.
*/
-package org.apache.servicecomb.config.client;
+package org.apache.servicecomb.config.kie.client;
-import org.apache.servicecomb.deployment.Deployment;
-import org.apache.servicecomb.deployment.DeploymentProvider;
import org.apache.servicecomb.foundation.vertx.client.http.HttpClientOptionsSPI;
+import com.netflix.config.ConcurrentCompositeConfiguration;
+
import io.vertx.core.VertxOptions;
import io.vertx.core.http.HttpClientOptions;
import io.vertx.core.http.HttpVersion;
-public class ConfigCenterHttpClientOptionsSPI implements HttpClientOptionsSPI {
- public static final String CLIENT_NAME = "config-center";
+public class ConfigKieHttpClientOptionsSPI implements HttpClientOptionsSPI {
+ public static final String CLIENT_NAME = "config-kie";
@Override
public String clientName() {
@@ -35,22 +35,27 @@ public class ConfigCenterHttpClientOptionsSPI implements HttpClientOptionsSPI {
@Override
public int getOrder() {
- return -100;
+ return -200;
}
@Override
public boolean enabled() {
- return Deployment.getSystemBootStrapInfo(DeploymentProvider.SYSTEM_KEY_CONFIG_CENTER) != null;
+ return KieConfig.INSTANCE.getServerUri() != null;
}
@Override
public String getConfigTag() {
- return "cc.consumer";
+ return "kie.consumer";
+ }
+
+ @Override
+ public ConcurrentCompositeConfiguration getConfigReader() {
+ return KieConfig.getFinalConfig();
}
@Override
public int getEventLoopPoolSize() {
- return ConfigCenterConfig.INSTANCE.getEventLoopSize();
+ return KieConfig.INSTANCE.getEventLoopSize();
}
@Override
@@ -60,7 +65,7 @@ public class ConfigCenterHttpClientOptionsSPI implements HttpClientOptionsSPI {
@Override
public int getInstanceCount() {
- return ConfigCenterConfig.INSTANCE.getVerticalInstanceCount();
+ return KieConfig.INSTANCE.getVerticalInstanceCount();
}
@Override
@@ -85,12 +90,12 @@ public class ConfigCenterHttpClientOptionsSPI implements HttpClientOptionsSPI {
@Override
public int getConnectTimeoutInMillis() {
- return ConfigCenterConfig.INSTANCE.getConnectionTimeout();
+ return KieConfig.INSTANCE.getConnectionTimeOut();
}
@Override
public int getIdleTimeoutInSeconds() {
- return ConfigCenterConfig.INSTANCE.getIdleTimeoutInSeconds();
+ return KieConfig.INSTANCE.getIdleTimeoutInSeconds();
}
@Override
@@ -140,31 +145,31 @@ public class ConfigCenterHttpClientOptionsSPI implements HttpClientOptionsSPI {
@Override
public boolean isProxyEnable() {
- return ConfigCenterConfig.INSTANCE.isProxyEnable();
+ return KieConfig.INSTANCE.isProxyEnable();
}
@Override
public String getProxyHost() {
- return ConfigCenterConfig.INSTANCE.getProxyHost();
+ return KieConfig.INSTANCE.getProxyHost();
}
@Override
public int getProxyPort() {
- return ConfigCenterConfig.INSTANCE.getProxyPort();
+ return KieConfig.INSTANCE.getProxyPort();
}
@Override
public String getProxyUsername() {
- return ConfigCenterConfig.INSTANCE.getProxyUsername();
+ return KieConfig.INSTANCE.getProxyUsername();
}
@Override
public String getProxyPassword() {
- return ConfigCenterConfig.INSTANCE.getProxyPasswd();
+ return KieConfig.INSTANCE.getProxyPasswd();
}
@Override
public boolean isSsl() {
- return ConfigCenterConfig.INSTANCE.getServerUri().get(0).startsWith("https");
+ return KieConfig.INSTANCE.getServerUri() != null && KieConfig.INSTANCE.getServerUri().startsWith("https");
}
}
diff --git a/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/client/KieClient.java b/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/client/KieClient.java
index adcff94..362a90d 100644
--- a/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/client/KieClient.java
+++ b/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/client/KieClient.java
@@ -17,18 +17,14 @@
package org.apache.servicecomb.config.kie.client;
-import io.netty.handler.codec.http.HttpResponseStatus;
-import io.vertx.core.DeploymentOptions;
-import io.vertx.core.Vertx;
-import io.vertx.core.VertxOptions;
-import io.vertx.core.http.HttpClientOptions;
-import io.vertx.core.http.HttpClientRequest;
import java.io.IOException;
import java.util.Map;
+import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
+
import org.apache.http.HttpStatus;
import org.apache.servicecomb.config.kie.archaius.sources.KieConfigurationSourceImpl.UpdateHandler;
import org.apache.servicecomb.config.kie.model.KVResponse;
@@ -36,15 +32,12 @@ import org.apache.servicecomb.foundation.common.event.EventManager;
import org.apache.servicecomb.foundation.common.net.IpPort;
import org.apache.servicecomb.foundation.common.net.NetUtils;
import org.apache.servicecomb.foundation.common.utils.JsonUtils;
-import org.apache.servicecomb.foundation.vertx.AddressResolverConfig;
-import org.apache.servicecomb.foundation.vertx.VertxUtils;
-import org.apache.servicecomb.foundation.vertx.client.ClientPoolManager;
-import org.apache.servicecomb.foundation.vertx.client.ClientVerticle;
-import org.apache.servicecomb.foundation.vertx.client.http.HttpClientPoolFactory;
-import org.apache.servicecomb.foundation.vertx.client.http.HttpClientWithContext;
+import org.apache.servicecomb.foundation.vertx.client.http.HttpClients;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import io.vertx.core.http.HttpClientRequest;
+
public class KieClient {
private static final Logger LOGGER = LoggerFactory.getLogger(KieClient.class);
@@ -56,13 +49,13 @@ public class KieClient {
return thread;
});
- private static final long TIME_OUT = 10000;
+ private static final long PULL_REQUEST_TIME_OUT_IN_MILLIS = 10000;
- private static AtomicBoolean IS_FIRST_PULL = new AtomicBoolean(true);
+ private static final long LONG_POLLING_REQUEST_TIME_OUT_IN_MILLIS = 60000;
- private static final int LONG_POLLING_WAIT_TIME = 30;
+ private static AtomicBoolean IS_FIRST_PULL = new AtomicBoolean(true);
- private static final int SOCKET_TIMOUT = 50;
+ private static final int LONG_POLLING_WAIT_TIME_IN_SECONDS = 30;
private static final KieConfig KIE_CONFIG = KieConfig.INSTANCE;
@@ -74,18 +67,12 @@ public class KieClient {
private final String serviceUri = KIE_CONFIG.getServerUri();
- private ClientPoolManager<HttpClientWithContext> clientMgr;
-
public KieClient(UpdateHandler updateHandler) {
+ HttpClients.addNewClientPoolManager(new ConfigKieHttpClientOptionsSPI());
KieWatcher.INSTANCE.setUpdateHandler(updateHandler);
}
public void refreshKieConfig() {
- try {
- deployConfigClient();
- } catch (InterruptedException e) {
- throw new IllegalStateException(e);
- }
if (enableLongPolling) {
EXECUTOR.execute(new ConfigRefresh(serviceUri));
} else {
@@ -94,21 +81,6 @@ public class KieClient {
}
}
- private void deployConfigClient() throws InterruptedException {
- VertxOptions vertxOptions = new VertxOptions();
- vertxOptions.setAddressResolverOptions(AddressResolverConfig.getAddressResover("kie.consumer",
- KieConfig.getFinalConfig()));
- Vertx vertx = VertxUtils.getOrCreateVertxByName("kie", vertxOptions);
-
- HttpClientOptions httpClientOptions = new HttpClientOptions();
- httpClientOptions.setKeepAlive(true);
- httpClientOptions.setIdleTimeout(SOCKET_TIMOUT);
- clientMgr = new ClientPoolManager<>(vertx, new HttpClientPoolFactory(httpClientOptions));
-
- DeploymentOptions deployOptions = VertxUtils.createClientDeployOptions(clientMgr, 1);
- VertxUtils.blockDeploy(vertx, ClientVerticle.class, deployOptions);
- }
-
public void destroy() {
if (EXECUTOR != null) {
EXECUTOR.shutdown();
@@ -127,29 +99,38 @@ public class KieClient {
@Override
public void run() {
try {
- refreshConfig();
+ CountDownLatch latch = new CountDownLatch(1);
+ refreshConfig(latch);
+ latch.await();
} catch (Throwable e) {
LOGGER.error("client refresh thread exception ", e);
}
+ if (enableLongPolling) {
+ EXECUTOR.execute(this);
+ }
}
@SuppressWarnings("deprecation")
- void refreshConfig() {
+ void refreshConfig(CountDownLatch latch) {
String path = "/v1/"
+ KieConfig.INSTANCE.getDomainName()
+ "/kie/kv?label=app:"
+ KieConfig.INSTANCE.getAppName();
+
+ long timeout;
if (enableLongPolling && !IS_FIRST_PULL.get()) {
- path += "&wait=" + LONG_POLLING_WAIT_TIME + "s";
+ path += "&wait=" + LONG_POLLING_WAIT_TIME_IN_SECONDS + "s";
+ timeout = LONG_POLLING_REQUEST_TIME_OUT_IN_MILLIS;
} else {
IS_FIRST_PULL.compareAndSet(true, false);
+ timeout = PULL_REQUEST_TIME_OUT_IN_MILLIS;
}
String finalPath = path;
- clientMgr.findThreadBindClientPool().runOnContext(client -> {
+ HttpClients.getClient(ConfigKieHttpClientOptionsSPI.CLIENT_NAME).runOnContext(client -> {
IpPort ipPort = NetUtils.parseIpPortFromURI(serviceUri);
HttpClientRequest request = client
.get(ipPort.getPort(), ipPort.getHostOrIp(), finalPath, rsp -> {
- if (rsp.statusCode() == HttpResponseStatus.OK.code()) {
+ if (rsp.statusCode() == HttpStatus.SC_OK) {
rsp.bodyHandler(buf -> {
try {
Map<String, Object> resMap = KieUtil.getConfigByLabel(JsonUtils.OBJ_MAPPER
@@ -163,24 +144,27 @@ public class KieClient {
serviceUri,
e.getMessage());
}
+ latch.countDown();
});
- } else if (rsp.statusCode() == HttpStatus.SC_NOT_FOUND) {
+ } else if (rsp.statusCode() == HttpStatus.SC_NOT_MODIFIED) {
EventManager.post(new ConnSuccEvent());
+ latch.countDown();
} else {
EventManager.post(new ConnFailEvent("fetch config fail"));
- LOGGER.error("Config update from {} failed. Error message is [{}].",
+ LOGGER.error("Config update from {} failed. Error code is {}, error message is [{}].",
serviceUri,
+ rsp.statusCode(),
rsp.statusMessage());
+ latch.countDown();
}
- if (enableLongPolling) {
- EXECUTOR.execute(this);
- }
- }).setTimeout(TIME_OUT);
+ }).setTimeout(timeout);
+
request.exceptionHandler(e -> {
EventManager.post(new ConnFailEvent("fetch config fail"));
LOGGER.error("Config update from {} failed. Error message is [{}].",
serviceUri,
e.getMessage());
+ latch.countDown();
});
request.end();
});
diff --git a/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/client/KieConfig.java b/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/client/KieConfig.java
index e95475f..bc80598 100644
--- a/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/client/KieConfig.java
+++ b/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/client/KieConfig.java
@@ -20,6 +20,8 @@ package org.apache.servicecomb.config.kie.client;
import static org.apache.servicecomb.foundation.common.base.ServiceCombConstants.DEFAULT_SERVICECOMB_ENV;
import static org.apache.servicecomb.foundation.common.base.ServiceCombConstants.SERVICECOMB_ENV;
+import org.apache.servicecomb.foundation.vertx.VertxConst;
+
import com.netflix.config.ConcurrentCompositeConfiguration;
public class KieConfig {
@@ -46,6 +48,14 @@ public class KieConfig {
private static final String INSTANCE_TAGS = "instance_description.properties.tags";
+ public static final String CONNECTION_TIME_OUT = "servicecomb.kie.client.timeout.connection";
+
+ public static final String EVENT_LOOP_SIZE = "servicecomb.kie.client.eventLoopSize";
+
+ public static final String VERTICAL_INSTANCE_COUNT = "servicecomb.kie.client.verticalInstanceCount";
+
+ public static final String IDLE_TIMEOUT_IN_SECONDES = "servicecomb.kie.client.idleTimeoutInSeconds";
+
private static final int DEFAULT_REFRESH_INTERVAL = 3000;
private static final int DEFAULT_FIRST_REFRESH_INTERVAL = 0;
@@ -63,6 +73,22 @@ public class KieConfig {
KieConfig.finalConfig = finalConfig;
}
+ public int getConnectionTimeOut() {
+ return finalConfig.getInt(CONNECTION_TIME_OUT, 1000);
+ }
+
+ public int getEventLoopSize() {
+ return finalConfig.getInt(EVENT_LOOP_SIZE, 2);
+ }
+
+ public int getVerticalInstanceCount() {
+ return finalConfig.getInt(VERTICAL_INSTANCE_COUNT, 1);
+ }
+
+ public int getIdleTimeoutInSeconds() {
+ return finalConfig.getInt(IDLE_TIMEOUT_IN_SECONDES, 60);
+ }
+
public String getVersion() {
return finalConfig.getString(SERVICE_VERSION);
}
@@ -102,4 +128,25 @@ public class KieConfig {
public boolean enableLongPolling() {
return finalConfig.getBoolean(ENABLE_LONG_POLLING, DEFAULT_ENABLE_LONG_POLLING);
}
+
+ public Boolean isProxyEnable() {
+ return finalConfig.getBoolean(VertxConst.PROXY_ENABLE, false);
+ }
+
+ public String getProxyHost() {
+ return finalConfig.getString(VertxConst.PROXY_HOST, "127.0.0.1");
+ }
+
+ public int getProxyPort() {
+ return finalConfig.getInt(VertxConst.PROXY_PORT, 8080);
+ }
+
+ public String getProxyUsername() {
+ return finalConfig.getString(VertxConst.PROXY_USERNAME, null);
+ }
+
+ public String getProxyPasswd() {
+ return finalConfig.getString(VertxConst.PROXY_PASSWD, null);
+ }
+
}
diff --git a/dynamic-config/config-kie/src/test/java/org/apache/servicecomb/config/kie/client/TestKieClient.java b/dynamic-config/config-kie/src/test/java/org/apache/servicecomb/config/kie/client/TestKieClient.java
index 9a5d81f..0a61f75 100644
--- a/dynamic-config/config-kie/src/test/java/org/apache/servicecomb/config/kie/client/TestKieClient.java
+++ b/dynamic-config/config-kie/src/test/java/org/apache/servicecomb/config/kie/client/TestKieClient.java
@@ -178,14 +178,9 @@ public class TestKieClient {
handler.run(httpClient);
}
};
- new Expectations() {
- {
- clientMgr.findThreadBindClientPool();
- result = httpClientWithContext;
- }
- };
+
KieClient kie = new KieClient(updateHandler);
- Deencapsulation.setField(kie, "clientMgr", clientMgr);
+
ConfigRefresh refresh = kie.new ConfigRefresh("http://configcentertest:30103");
refresh.run();
Assert.assertEquals("Fail event trigger", map.get("result"));
diff --git a/dynamic-config/config-kie/src/test/java/org/apache/servicecomb/config/kie/client/TestKieUtil.java b/dynamic-config/config-kie/src/test/java/org/apache/servicecomb/config/kie/client/TestKieUtil.java
index f5acc1b..a27cf31 100644
--- a/dynamic-config/config-kie/src/test/java/org/apache/servicecomb/config/kie/client/TestKieUtil.java
+++ b/dynamic-config/config-kie/src/test/java/org/apache/servicecomb/config/kie/client/TestKieUtil.java
@@ -1,9 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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
+ *
+ * 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.apache.servicecomb.config.kie.client;
import java.util.Map;
import org.apache.servicecomb.config.kie.model.KVDoc;
-import org.apache.servicecomb.config.kie.model.ValueType;
import org.junit.Assert;
import org.junit.Test;
diff --git a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/VertxConst.java b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/VertxConst.java
new file mode 100644
index 0000000..1ee2afa
--- /dev/null
+++ b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/VertxConst.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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
+ *
+ * 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.apache.servicecomb.foundation.vertx;
+
+public final class VertxConst {
+ public static final String PROXY_PRE_NAME = "servicecomb.proxy.";
+
+ public static final String PROXY_ENABLE = PROXY_PRE_NAME + "enable";
+
+ public static final String PROXY_HOST = PROXY_PRE_NAME + "host";
+
+ public static final String PROXY_PORT = PROXY_PRE_NAME + "port";
+
+ public static final String PROXY_USERNAME = PROXY_PRE_NAME + "username";
+
+ public static final String PROXY_PASSWD = PROXY_PRE_NAME + "passwd";
+}
diff --git a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/client/http/HttpClientOptionsSPI.java b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/client/http/HttpClientOptionsSPI.java
index dc942ae..164e4f4 100644
--- a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/client/http/HttpClientOptionsSPI.java
+++ b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/client/http/HttpClientOptionsSPI.java
@@ -20,6 +20,8 @@ package org.apache.servicecomb.foundation.vertx.client.http;
import org.apache.servicecomb.foundation.common.encrypt.Encryptions;
import org.apache.servicecomb.foundation.vertx.VertxTLSBuilder;
+import com.netflix.config.ConcurrentCompositeConfiguration;
+
import io.vertx.core.http.HttpClientOptions;
import io.vertx.core.http.HttpVersion;
import io.vertx.core.net.ProxyOptions;
@@ -41,6 +43,9 @@ public interface HttpClientOptionsSPI {
* other clients configuration or read the common configuration. */
String getConfigTag();
+ /* for config modules, the configuration is not ready, need set up config reader */
+ ConcurrentCompositeConfiguration getConfigReader();
+
/***************** vert.x common settings ***************************/
int getEventLoopPoolSize();
diff --git a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/client/http/HttpClients.java b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/client/http/HttpClients.java
index 3db635d..74c3593 100644
--- a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/client/http/HttpClients.java
+++ b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/client/http/HttpClients.java
@@ -86,7 +86,8 @@ public class HttpClients {
vertx = SharedVertxFactory.getSharedVertx();
} else {
VertxOptions vertxOptions = new VertxOptions()
- .setAddressResolverOptions(AddressResolverConfig.getAddressResover(option.getConfigTag()))
+ .setAddressResolverOptions(AddressResolverConfig
+ .getAddressResover(option.getConfigTag(), option.getConfigReader()))
.setEventLoopPoolSize(option.getEventLoopPoolSize());
// Maybe we can deploy only one vert.x for the application. However this has did it like this.
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/RegistryHttpClientOptionsSPI.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/RegistryHttpClientOptionsSPI.java
index b8869e0..b465252 100644
--- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/RegistryHttpClientOptionsSPI.java
+++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/RegistryHttpClientOptionsSPI.java
@@ -20,6 +20,7 @@ package org.apache.servicecomb.serviceregistry.client.http;
import org.apache.servicecomb.foundation.vertx.client.http.HttpClientOptionsSPI;
import org.apache.servicecomb.serviceregistry.config.ServiceRegistryConfig;
+import com.netflix.config.ConcurrentCompositeConfiguration;
import com.netflix.config.DynamicPropertyFactory;
import io.vertx.core.VertxOptions;
@@ -52,6 +53,11 @@ public class RegistryHttpClientOptionsSPI implements HttpClientOptionsSPI {
}
@Override
+ public ConcurrentCompositeConfiguration getConfigReader() {
+ return null;
+ }
+
+ @Override
public int getEventLoopPoolSize() {
return DynamicPropertyFactory.getInstance()
.getIntProperty(ServiceRegistryConfig.EVENT_LOOP_POOL_SIZE, 4).get();
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/config/ServiceRegistryConfig.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/config/ServiceRegistryConfig.java
index af1e5d7..a926b27 100644
--- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/config/ServiceRegistryConfig.java
+++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/config/ServiceRegistryConfig.java
@@ -60,18 +60,6 @@ public final class ServiceRegistryConfig {
public static final String NO_DOMAIN = "default";
- public static final String PROXY_PRE_NAME = "servicecomb.proxy.";
-
- public static final String PROXY_ENABLE = PROXY_PRE_NAME + "enable";
-
- public static final String PROXY_HOST = PROXY_PRE_NAME + "host";
-
- public static final String PROXY_PORT = PROXY_PRE_NAME + "port";
-
- public static final String PROXY_USERNAME = PROXY_PRE_NAME + "username";
-
- public static final String PROXY_PASSWD = PROXY_PRE_NAME + "passwd";
-
public static final String SSL_KEY = "sc.consumer";
public static final String PROXY_KEY = "sc.consumer";
diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/config/ServiceRegistryConfigBuilder.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/config/ServiceRegistryConfigBuilder.java
index edb615f..e8c31cc 100644
--- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/config/ServiceRegistryConfigBuilder.java
+++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/config/ServiceRegistryConfigBuilder.java
@@ -28,6 +28,7 @@ import org.apache.servicecomb.foundation.auth.AuthHeaderProvider;
import org.apache.servicecomb.foundation.common.net.IpPort;
import org.apache.servicecomb.foundation.common.net.NetUtils;
import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils;
+import org.apache.servicecomb.foundation.vertx.VertxConst;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -268,25 +269,25 @@ class ServiceRegistryConfigBuilder {
}
public Boolean isProxyEnable() {
- String enable = getProperty("false", ServiceRegistryConfig.PROXY_ENABLE);
+ String enable = getProperty("false", VertxConst.PROXY_ENABLE);
return Boolean.parseBoolean(enable);
}
public String getProxyHost() {
- return getProperty("127.0.0.1", ServiceRegistryConfig.PROXY_HOST);
+ return getProperty("127.0.0.1", VertxConst.PROXY_HOST);
}
public int getProxyPort() {
- String port = getProperty("8080", ServiceRegistryConfig.PROXY_PORT);
+ String port = getProperty("8080", VertxConst.PROXY_PORT);
return Integer.parseInt(port);
}
public String getProxyUsername() {
- return getProperty(null, ServiceRegistryConfig.PROXY_USERNAME);
+ return getProperty(null, VertxConst.PROXY_USERNAME);
}
public String getProxyPasswd() {
- return getProperty(null, ServiceRegistryConfig.PROXY_PASSWD);
+ return getProperty(null, VertxConst.PROXY_PASSWD);
}
public List<AuthHeaderProvider> getAuthHeaderProviders() {
diff --git a/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/HttpTransportHttpClientOptionsSPI.java b/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/HttpTransportHttpClientOptionsSPI.java
index 619bb03..3bee8df 100644
--- a/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/HttpTransportHttpClientOptionsSPI.java
+++ b/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/HttpTransportHttpClientOptionsSPI.java
@@ -19,6 +19,8 @@ package org.apache.servicecomb.transport.rest.client;
import org.apache.servicecomb.foundation.vertx.client.http.HttpClientOptionsSPI;
+import com.netflix.config.ConcurrentCompositeConfiguration;
+
import io.vertx.core.VertxOptions;
import io.vertx.core.http.HttpClientOptions;
import io.vertx.core.http.HttpVersion;
@@ -49,6 +51,11 @@ public class HttpTransportHttpClientOptionsSPI implements HttpClientOptionsSPI {
}
@Override
+ public ConcurrentCompositeConfiguration getConfigReader() {
+ return null;
+ }
+
+ @Override
public int getEventLoopPoolSize() {
// not reading this, using shared transport vert.x
return -1;