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
The following commit(s) were added to refs/heads/master by this push:
new 3b0f942c8 [SCB-2670] support CSE instance-level configuration query
(#3288)
3b0f942c8 is described below
commit 3b0f942c8d5cdc1b0199b63aa772cc8c5620bbf5
Author: lbc97 <[email protected]>
AuthorDate: Fri Aug 19 15:10:22 2022 +0800
[SCB-2670] support CSE instance-level configuration query (#3288)
---
.../client/model/ConfigurationsRequestFactory.java | 17 +++++++
.../config/kie/client/model/KieConfiguration.java | 22 +++++++++
demo/demo-cse-v2/README.md | 56 +++++++++++++++++++++-
.../servicecomb/samples/ConsumerConfigIT.java | 2 +
.../apache/servicecomb/config/kie/KieConfig.java | 6 +++
.../config/kie/KieConfigurationSourceImpl.java | 2 +
6 files changed, 103 insertions(+), 2 deletions(-)
diff --git
a/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/ConfigurationsRequestFactory.java
b/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/ConfigurationsRequestFactory.java
index dd766aac8..4f2b4325c 100644
---
a/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/ConfigurationsRequestFactory.java
+++
b/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/ConfigurationsRequestFactory.java
@@ -30,6 +30,10 @@ public class ConfigurationsRequestFactory {
private static final String KEY_SERVICE = "service";
+ private static final String KEY_VERSION = "version";
+
+ private static final int VERSION_ORDER = 50;
+
private static final int SERVICE_ORDER = 100;
private static final int APP_ORDER = 200;
@@ -44,6 +48,9 @@ public class ConfigurationsRequestFactory {
if (configuration.isEnableServiceConfig()) {
result.add(createServiceConfigurationsRequest(configuration));
}
+ if (configuration.isEnableVersionConfig()) {
+ result.add(createVersionConfigurationsRequest(configuration));
+ }
if (configuration.isEnableCustomConfig()) {
result.add(createCustomConfigurationsRequest(configuration));
}
@@ -67,6 +74,16 @@ public class ConfigurationsRequestFactory {
buildLabelQueryItem(KEY_ENVIRONMENT,
configuration.getEnvironment())));
}
+ private static ConfigurationsRequest
createVersionConfigurationsRequest(KieConfiguration configuration) {
+ return new ConfigurationsRequest()
+ .setOrder(VERSION_ORDER)
+ .setWithExact(true)
+ .setLabelsQuery(buildLabelQuery(buildLabelQueryItem(KEY_APP,
configuration.getAppName()),
+ buildLabelQueryItem(KEY_SERVICE, configuration.getServiceName()),
+ buildLabelQueryItem(KEY_ENVIRONMENT,
configuration.getEnvironment()),
+ buildLabelQueryItem(KEY_VERSION, configuration.getVersion())));
+ }
+
private static ConfigurationsRequest
createCustomConfigurationsRequest(KieConfiguration configuration) {
return new ConfigurationsRequest()
.setOrder(CUSTOM_ORDER)
diff --git
a/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/KieConfiguration.java
b/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/KieConfiguration.java
index 2a8bf4d9e..9c75f2d09 100644
---
a/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/KieConfiguration.java
+++
b/clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/model/KieConfiguration.java
@@ -32,10 +32,14 @@ public class KieConfiguration {
private String environment;
+ private String version;
+
private boolean enableAppConfig;
private boolean enableServiceConfig;
+ private boolean enableVersionConfig;
+
private boolean enableCustomConfig;
private String customLabelValue;
@@ -125,6 +129,15 @@ public class KieConfiguration {
return this;
}
+ public boolean isEnableVersionConfig() {
+ return enableVersionConfig;
+ }
+
+ public KieConfiguration setEnableVersionConfig(boolean enableVersionConfig) {
+ this.enableVersionConfig = enableVersionConfig;
+ return this;
+ }
+
public int getPollingWaitInSeconds() {
return pollingWaitInSeconds;
}
@@ -160,4 +173,13 @@ public class KieConfiguration {
this.refreshIntervalInMillis = refreshIntervallnMillis;
return this;
}
+
+ public String getVersion() {
+ return version;
+ }
+
+ public KieConfiguration setVersion(String version) {
+ this.version = version;
+ return this;
+ }
}
diff --git a/demo/demo-cse-v2/README.md b/demo/demo-cse-v2/README.md
index b5c489012..a9936ecc9 100644
--- a/demo/demo-cse-v2/README.md
+++ b/demo/demo-cse-v2/README.md
@@ -9,7 +9,7 @@
* 依次启动 provider、consumer、gateway
* 在配置中心增加如下配置:
- * 应用级配置:consumer.yaml。类型为 yaml。
+* 应用级配置:consumer.yaml。类型为 yaml。
```yaml
cse:
@@ -59,6 +59,27 @@ cse:
test:
priority: v4
```
+* 应用级配置:consumerApp.yaml,应用选择demo-java-chassis-cse-v2。类型为 yaml。
+```yaml
+cse:
+ v2:
+ test:
+ priority1: v1
+```
+* 服务级配置:consumerSer.yaml,微服务性选择consumer。类型为 yaml。
+```yaml
+cse:
+ v2:
+ test:
+ priority1: v2
+```
+* 版本级配置:consumerIns.yaml,labels:
app=demo-java-chassis-cse-v2,environment=,service=consumer,version = 0.0.1。类型为
yaml。
+```yaml
+cse:
+ v2:
+ test:
+ priority1: v3
+```
* 应用级配置: cse.v2.test.bar: bar 。 类型为 text。
@@ -95,4 +116,35 @@ cse:
priority: v3
```
-* 执行 tests-client 里面的集成测试用例 (成功)
\ No newline at end of file
+* 执行 tests-client 里面的集成测试用例 (成功)
+* 修改
+ * 应用级consumerApp.yaml。
+```yaml
+cse:
+ v2:
+ test:
+ priority1: v10
+```
+
+* 执行 tests-client 里面的集成测试用例 (成功)
+* 修改
+ * 服务级配置:consumerSer.yaml。
+```yaml
+cse:
+ v2:
+ test:
+ priority1: v20
+```
+
+* 执行 tests-client 里面的集成测试用例 (成功)
+
+* 修改
+ * 版本级配置:consumerIns.yaml。
+```yaml
+cse:
+ v2:
+ test:
+ priority1: v30
+```
+
+* 执行 tests-client 里面的集成测试用例 (失败)
\ No newline at end of file
diff --git
a/demo/demo-cse-v2/test-client/src/main/java/org/apache/servicecomb/samples/ConsumerConfigIT.java
b/demo/demo-cse-v2/test-client/src/main/java/org/apache/servicecomb/samples/ConsumerConfigIT.java
index 18011c410..8d783d626 100644
---
a/demo/demo-cse-v2/test-client/src/main/java/org/apache/servicecomb/samples/ConsumerConfigIT.java
+++
b/demo/demo-cse-v2/test-client/src/main/java/org/apache/servicecomb/samples/ConsumerConfigIT.java
@@ -43,6 +43,8 @@ public class ConsumerConfigIT implements CategorizedTestCase {
TestMgr.check("\"common\"", result);
result = template.getForObject(Config.GATEWAY_URL +
"/config?key=cse.v2.test.extra", String.class);
TestMgr.check("\"common\"", result);
+ result = template.getForObject(Config.GATEWAY_URL +
"/config?key=cse.v2.test.priority1", String.class);
+ TestMgr.check("\"v3\"", result);
}
private void testFooBar() {
diff --git
a/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfig.java
b/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfig.java
index 31371cd8f..f0d1171a3 100644
---
a/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfig.java
+++
b/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfig.java
@@ -57,6 +57,8 @@ public class KieConfig {
private static final String ENABLE_SERVICE_CONFIG =
"servicecomb.kie.enableServiceConfig";
+ private static final String ENABLE_VERSION_CONFIG =
"servicecomb.kie.enableVersionConfig";
+
private static final String ENABLE_CUSTOM_CONFIG =
"servicecomb.kie.enableCustomConfig";
public static final String FILE_SOURCE =
"servicecomb.config.client.fileSource";
@@ -140,6 +142,10 @@ public class KieConfig {
return finalConfig.getBoolean(ENABLE_SERVICE_CONFIG, true);
}
+ public boolean enableVersionConfig() {
+ return finalConfig.getBoolean(ENABLE_VERSION_CONFIG, true);
+ }
+
public boolean enableCustomConfig() {
return finalConfig.getBoolean(ENABLE_CUSTOM_CONFIG, true);
}
diff --git
a/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfigurationSourceImpl.java
b/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfigurationSourceImpl.java
index 1c0de5419..fbf700e82 100644
---
a/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfigurationSourceImpl.java
+++
b/dynamic-config/config-kie/src/main/java/org/apache/servicecomb/config/kie/KieConfigurationSourceImpl.java
@@ -117,7 +117,9 @@ public class KieConfigurationSourceImpl implements
ConfigCenterConfigurationSour
.setEnableCustomConfig(KieConfig.INSTANCE.enableCustomConfig())
.setEnableLongPolling(KieConfig.INSTANCE.enableLongPolling())
.setEnableServiceConfig(KieConfig.INSTANCE.enableServiceConfig())
+ .setEnableVersionConfig(KieConfig.INSTANCE.enableVersionConfig())
.setEnvironment(KieConfig.INSTANCE.getEnvironment())
+ .setVersion(KieConfig.INSTANCE.getVersion())
.setPollingWaitInSeconds(KieConfig.INSTANCE.getPollingWaitTime())
.setProject(KieConfig.INSTANCE.getDomainName())
.setRefreshIntervalInMillis(KieConfig.INSTANCE.getRefreshInterval())