From ee1e5d36efb5058822475651144525b1da6e5dd9 Mon Sep 17 00:00:00 2001 From: theonefx Date: Sat, 20 Feb 2021 14:31:40 +0800 Subject: [PATCH 01/15] Use spring.cloud.version instead of the version number of each component --- pom.xml | 101 ++---------------- spring-cloud-alibaba-dependencies/pom.xml | 2 +- .../pom.xml | 1 - .../pom.xml | 1 - .../pom.xml | 1 - .../pom.xml | 6 -- .../pom.xml | 6 -- .../pom.xml | 6 -- .../spring-cloud-starter-dubbo/pom.xml | 2 - 9 files changed, 12 insertions(+), 114 deletions(-) diff --git a/pom.xml b/pom.xml index 7f9f0f88..0208a34b 100644 --- a/pom.xml +++ b/pom.xml @@ -80,18 +80,10 @@ - 2.2.5.RC2 + 2.2.6-SNAPSHOT - - 2.2.5.RELEASE - 2.2.5.RELEASE - 2.2.5.RELEASE - 2.2.3.RELEASE - 2.2.5.RELEASE - Horsham.SR3 - 2.2.4.RELEASE - 2.2.5.RELEASE - 2.2.3.RELEASE + + Hoxton.SR9 2.7.8 @@ -132,6 +124,14 @@ import + + org.springframework.cloud + spring-cloud-dependencies + ${spring.cloud.version} + pom + import + + com.alibaba.cloud spring-cloud-alibaba-dependencies @@ -140,85 +140,6 @@ import - - org.springframework.cloud - spring-cloud-commons-dependencies - ${spring-cloud-commons.version} - pom - import - - - - org.springframework.cloud - spring-cloud-test-support - test - ${spring-cloud-commons.version} - - - - org.springframework.cloud - spring-cloud-netflix-dependencies - ${spring-cloud-netflix.version} - pom - import - - - - org.springframework.cloud - spring-cloud-openfeign-dependencies - ${spring-cloud-openfeign.version} - pom - import - - - - org.springframework.cloud - spring-cloud-config-dependencies - ${spring-cloud-config.version} - pom - import - - - - org.springframework.cloud - spring-cloud-bus-dependencies - ${spring-cloud-bus.version} - pom - import - - - - org.springframework.cloud - spring-cloud-gateway-dependencies - ${spring-cloud-gateway.version} - pom - import - - - - org.springframework.cloud - spring-cloud-stream-dependencies - ${spring-cloud-stream.version} - pom - import - - - - org.springframework.cloud - spring-cloud-consul-dependencies - ${spring-cloud-consul.version} - pom - import - - - - org.springframework.cloud - spring-cloud-zookeeper-dependencies - ${spring-cloud-zookeeper.version} - pom - import - - org.apache.dubbo diff --git a/spring-cloud-alibaba-dependencies/pom.xml b/spring-cloud-alibaba-dependencies/pom.xml index 1fdaf869..18599e51 100644 --- a/spring-cloud-alibaba-dependencies/pom.xml +++ b/spring-cloud-alibaba-dependencies/pom.xml @@ -18,7 +18,7 @@ Spring Cloud Alibaba Dependencies - 2.2.5.RC2 + 2.2.6-SNAPSHOT 1.8.0 1.3.0 1.4.1 diff --git a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-consumer-sample/pom.xml b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-consumer-sample/pom.xml index 3b855121..123a92a0 100644 --- a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-consumer-sample/pom.xml +++ b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-consumer-sample/pom.xml @@ -99,7 +99,6 @@ org.springframework.cloud spring-cloud-starter-consul-discovery - ${spring-cloud-consul.version} diff --git a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-sample/pom.xml b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-sample/pom.xml index d7e932e7..5023d4fd 100644 --- a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-sample/pom.xml +++ b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-sample/pom.xml @@ -90,7 +90,6 @@ org.springframework.cloud spring-cloud-starter-consul-discovery - ${spring-cloud-consul.version} diff --git a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-web-sample/pom.xml b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-web-sample/pom.xml index d434ebb1..95999e0f 100644 --- a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-web-sample/pom.xml +++ b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-web-sample/pom.xml @@ -89,7 +89,6 @@ org.springframework.cloud spring-cloud-starter-consul-discovery - ${spring-cloud-consul.version} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-config-server/pom.xml b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-config-server/pom.xml index 483914cf..a17aae08 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-config-server/pom.xml +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-config-server/pom.xml @@ -51,12 +51,6 @@ test - - org.springframework.cloud - spring-cloud-test-support - test - - org.springframework.boot spring-boot-starter diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-config/pom.xml b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-config/pom.xml index 0a36d2c8..371ac977 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-config/pom.xml +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-config/pom.xml @@ -85,12 +85,6 @@ test - - org.springframework.cloud - spring-cloud-test-support - test - - org.powermock diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/pom.xml b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/pom.xml index 02a3c3e3..dae98efd 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/pom.xml +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/pom.xml @@ -111,12 +111,6 @@ test - - org.springframework.cloud - spring-cloud-test-support - test - - io.projectreactor reactor-test diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/pom.xml b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/pom.xml index 34b013b7..b404252b 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/pom.xml +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/pom.xml @@ -78,7 +78,6 @@ org.springframework.cloud spring-cloud-starter-zookeeper-discovery - ${spring-cloud-zookeeper.version} true @@ -112,7 +111,6 @@ org.springframework.cloud spring-cloud-starter-consul-discovery - ${spring-cloud-consul.version} true From d9727bb31f3e2b1af998bcb99a6a42f4b8d50536 Mon Sep 17 00:00:00 2001 From: theonefx Date: Sat, 20 Feb 2021 14:31:40 +0800 Subject: [PATCH 02/15] Use spring.cloud.version instead of the version number of each component --- pom.xml | 101 ++---------------- spring-cloud-alibaba-dependencies/pom.xml | 2 +- .../pom.xml | 1 - .../pom.xml | 1 - .../pom.xml | 1 - .../pom.xml | 6 -- .../pom.xml | 6 -- .../pom.xml | 6 -- .../spring-cloud-starter-dubbo/pom.xml | 2 - 9 files changed, 12 insertions(+), 114 deletions(-) diff --git a/pom.xml b/pom.xml index 7f9f0f88..0208a34b 100644 --- a/pom.xml +++ b/pom.xml @@ -80,18 +80,10 @@ - 2.2.5.RC2 + 2.2.6-SNAPSHOT - - 2.2.5.RELEASE - 2.2.5.RELEASE - 2.2.5.RELEASE - 2.2.3.RELEASE - 2.2.5.RELEASE - Horsham.SR3 - 2.2.4.RELEASE - 2.2.5.RELEASE - 2.2.3.RELEASE + + Hoxton.SR9 2.7.8 @@ -132,6 +124,14 @@ import + + org.springframework.cloud + spring-cloud-dependencies + ${spring.cloud.version} + pom + import + + com.alibaba.cloud spring-cloud-alibaba-dependencies @@ -140,85 +140,6 @@ import - - org.springframework.cloud - spring-cloud-commons-dependencies - ${spring-cloud-commons.version} - pom - import - - - - org.springframework.cloud - spring-cloud-test-support - test - ${spring-cloud-commons.version} - - - - org.springframework.cloud - spring-cloud-netflix-dependencies - ${spring-cloud-netflix.version} - pom - import - - - - org.springframework.cloud - spring-cloud-openfeign-dependencies - ${spring-cloud-openfeign.version} - pom - import - - - - org.springframework.cloud - spring-cloud-config-dependencies - ${spring-cloud-config.version} - pom - import - - - - org.springframework.cloud - spring-cloud-bus-dependencies - ${spring-cloud-bus.version} - pom - import - - - - org.springframework.cloud - spring-cloud-gateway-dependencies - ${spring-cloud-gateway.version} - pom - import - - - - org.springframework.cloud - spring-cloud-stream-dependencies - ${spring-cloud-stream.version} - pom - import - - - - org.springframework.cloud - spring-cloud-consul-dependencies - ${spring-cloud-consul.version} - pom - import - - - - org.springframework.cloud - spring-cloud-zookeeper-dependencies - ${spring-cloud-zookeeper.version} - pom - import - - org.apache.dubbo diff --git a/spring-cloud-alibaba-dependencies/pom.xml b/spring-cloud-alibaba-dependencies/pom.xml index 1fdaf869..18599e51 100644 --- a/spring-cloud-alibaba-dependencies/pom.xml +++ b/spring-cloud-alibaba-dependencies/pom.xml @@ -18,7 +18,7 @@ Spring Cloud Alibaba Dependencies - 2.2.5.RC2 + 2.2.6-SNAPSHOT 1.8.0 1.3.0 1.4.1 diff --git a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-consumer-sample/pom.xml b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-consumer-sample/pom.xml index 3b855121..123a92a0 100644 --- a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-consumer-sample/pom.xml +++ b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-consumer-sample/pom.xml @@ -99,7 +99,6 @@ org.springframework.cloud spring-cloud-starter-consul-discovery - ${spring-cloud-consul.version} diff --git a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-sample/pom.xml b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-sample/pom.xml index d7e932e7..5023d4fd 100644 --- a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-sample/pom.xml +++ b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-sample/pom.xml @@ -90,7 +90,6 @@ org.springframework.cloud spring-cloud-starter-consul-discovery - ${spring-cloud-consul.version} diff --git a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-web-sample/pom.xml b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-web-sample/pom.xml index d434ebb1..95999e0f 100644 --- a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-web-sample/pom.xml +++ b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-web-sample/pom.xml @@ -89,7 +89,6 @@ org.springframework.cloud spring-cloud-starter-consul-discovery - ${spring-cloud-consul.version} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-config-server/pom.xml b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-config-server/pom.xml index 483914cf..a17aae08 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-config-server/pom.xml +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-config-server/pom.xml @@ -51,12 +51,6 @@ test - - org.springframework.cloud - spring-cloud-test-support - test - - org.springframework.boot spring-boot-starter diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-config/pom.xml b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-config/pom.xml index 0a36d2c8..371ac977 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-config/pom.xml +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-config/pom.xml @@ -85,12 +85,6 @@ test - - org.springframework.cloud - spring-cloud-test-support - test - - org.powermock diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/pom.xml b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/pom.xml index 02a3c3e3..dae98efd 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/pom.xml +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/pom.xml @@ -111,12 +111,6 @@ test - - org.springframework.cloud - spring-cloud-test-support - test - - io.projectreactor reactor-test diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/pom.xml b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/pom.xml index 34b013b7..b404252b 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/pom.xml +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-dubbo/pom.xml @@ -78,7 +78,6 @@ org.springframework.cloud spring-cloud-starter-zookeeper-discovery - ${spring-cloud-zookeeper.version} true @@ -112,7 +111,6 @@ org.springframework.cloud spring-cloud-starter-consul-discovery - ${spring-cloud-consul.version} true From 1492ad56939f2cd87a88ec58f597839d61730b3f Mon Sep 17 00:00:00 2001 From: theonefx Date: Sat, 20 Feb 2021 16:32:18 +0800 Subject: [PATCH 03/15] upgrade spring cloud version to 2020.0.1 --- pom.xml | 6 +++--- .../nacos-discovery-consumer-example/pom.xml | 5 ----- .../pom.xml | 5 ----- .../seata-example/business-service/pom.xml | 4 ---- .../sentinel-example/sentinel-zuul-example/pom.xml | 5 ----- .../spring-cloud-alibaba-sentinel-gateway/pom.xml | 6 ------ .../spring-cloud-starter-alibaba-nacos-discovery/pom.xml | 5 ----- .../spring-cloud-starter-alibaba-seata/pom.xml | 6 ------ .../spring-cloud-starter-alibaba-sentinel/pom.xml | 6 ------ 9 files changed, 3 insertions(+), 45 deletions(-) diff --git a/pom.xml b/pom.xml index 0208a34b..3688f08c 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ org.springframework.cloud spring-cloud-build - 2.3.1.RELEASE + 3.0.1 @@ -83,7 +83,7 @@ 2.2.6-SNAPSHOT - Hoxton.SR9 + 2020.0.1 2.7.8 @@ -241,6 +241,7 @@ true true warning + true @@ -253,7 +254,6 @@ 1.8 1.8 - true diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/pom.xml b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/pom.xml index 4b0e61f1..8de96f97 100644 --- a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/pom.xml +++ b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/pom.xml @@ -31,11 +31,6 @@ spring-boot-starter-actuator - - org.springframework.cloud - spring-cloud-starter-netflix-ribbon - - org.springframework.cloud spring-cloud-starter-openfeign diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-spring-cloud-config-client-example/pom.xml b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-spring-cloud-config-client-example/pom.xml index 82cdbcd4..8a012fde 100644 --- a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-spring-cloud-config-client-example/pom.xml +++ b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-spring-cloud-config-client-example/pom.xml @@ -36,11 +36,6 @@ spring-boot-starter-actuator - - org.springframework.cloud - spring-cloud-starter-netflix-ribbon - - diff --git a/spring-cloud-alibaba-examples/seata-example/business-service/pom.xml b/spring-cloud-alibaba-examples/seata-example/business-service/pom.xml index 0ae95db7..350f6c49 100644 --- a/spring-cloud-alibaba-examples/seata-example/business-service/pom.xml +++ b/spring-cloud-alibaba-examples/seata-example/business-service/pom.xml @@ -26,10 +26,6 @@ org.springframework.cloud spring-cloud-starter-openfeign - - org.springframework.cloud - spring-cloud-starter-netflix-hystrix - org.springframework.cloud spring-cloud-starter-loadbalancer diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/pom.xml b/spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/pom.xml index 6fff4420..82e39e36 100644 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/pom.xml +++ b/spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/pom.xml @@ -34,11 +34,6 @@ spring-boot-starter-actuator - - org.springframework.cloud - spring-cloud-starter-netflix-zuul - - com.alibaba.cloud spring-cloud-alibaba-sentinel-gateway diff --git a/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/pom.xml b/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/pom.xml index 49283a18..c9513a44 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/pom.xml +++ b/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/pom.xml @@ -23,12 +23,6 @@ true - - org.springframework.cloud - spring-cloud-starter-netflix-zuul - true - - com.alibaba.csp sentinel-api-gateway-adapter-common diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/pom.xml b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/pom.xml index dae98efd..ab023806 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/pom.xml +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/pom.xml @@ -81,11 +81,6 @@ spring-cloud-context - - org.springframework.cloud - spring-cloud-starter-netflix-ribbon - - org.springframework.cloud spring-cloud-config-client diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/pom.xml b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/pom.xml index 3f3e1a2e..315856bd 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/pom.xml +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/pom.xml @@ -92,12 +92,6 @@ true - - org.springframework.cloud - spring-cloud-starter-netflix-ribbon - true - - org.springframework.boot spring-boot-starter-test diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/pom.xml b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/pom.xml index 40dc3596..f97d4a91 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/pom.xml +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/pom.xml @@ -81,12 +81,6 @@ true - - org.springframework.cloud - spring-cloud-starter-netflix-ribbon - true - - com.alibaba.csp sentinel-transport-simple-http From 72e3e26a7ded3168b35b7b03ce60f9f63987a2df Mon Sep 17 00:00:00 2001 From: theonefx Date: Sat, 20 Feb 2021 16:53:56 +0800 Subject: [PATCH 04/15] upgrade spring cloud version to 2020.0.1 --- pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3688f08c..027f8925 100644 --- a/pom.xml +++ b/pom.xml @@ -241,7 +241,6 @@ true true warning - true From 29091948e975b071e8b452fa5b188d5751a8531b Mon Sep 17 00:00:00 2001 From: theonefx Date: Sat, 20 Feb 2021 17:49:28 +0800 Subject: [PATCH 05/15] remove zuul example --- spring-cloud-alibaba-examples/pom.xml | 1 - .../sentinel-zuul-example/pom.xml | 78 ------------------- .../cloud/examples/RulesController.java | 53 ------------- .../examples/SentinelZuulApplication.java | 34 -------- .../cloud/examples/ZuulConfiguration.java | 68 ---------------- .../src/main/resources/api.json | 32 -------- .../src/main/resources/application.yaml | 40 ---------- .../src/main/resources/gateway.json | 26 ------- 8 files changed, 332 deletions(-) delete mode 100644 spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/pom.xml delete mode 100644 spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/src/main/java/com/alibaba/cloud/examples/RulesController.java delete mode 100644 spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/src/main/java/com/alibaba/cloud/examples/SentinelZuulApplication.java delete mode 100644 spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/src/main/java/com/alibaba/cloud/examples/ZuulConfiguration.java delete mode 100644 spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/src/main/resources/api.json delete mode 100644 spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/src/main/resources/application.yaml delete mode 100644 spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/src/main/resources/gateway.json diff --git a/spring-cloud-alibaba-examples/pom.xml b/spring-cloud-alibaba-examples/pom.xml index 157fc502..f590ce1e 100644 --- a/spring-cloud-alibaba-examples/pom.xml +++ b/spring-cloud-alibaba-examples/pom.xml @@ -25,7 +25,6 @@ sentinel-example/sentinel-feign-example/sentinel-feign-provider-example sentinel-example/sentinel-webflux-example sentinel-example/sentinel-spring-cloud-gateway-example - sentinel-example/sentinel-zuul-example nacos-example/nacos-discovery-example nacos-example/nacos-config-example nacos-example/nacos-gateway-example diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/pom.xml b/spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/pom.xml deleted file mode 100644 index 82e39e36..00000000 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/pom.xml +++ /dev/null @@ -1,78 +0,0 @@ - - - - - com.alibaba.cloud - spring-cloud-alibaba-examples - ${revision} - ../../pom.xml - - 4.0.0 - - - sentinel-zuul-example - Spring Cloud Starter Alibaba Sentinel x Zuul Example - Example demonstrating how to use sentinel with zuul - jar - - - - - - com.alibaba.cloud - spring-cloud-starter-alibaba-sentinel - - - - org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot - spring-boot-starter-actuator - - - - com.alibaba.cloud - spring-cloud-alibaba-sentinel-gateway - - - - - - - - - - - - - - - - - - - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - org.apache.maven.plugins - maven-deploy-plugin - ${maven-deploy-plugin.version} - - true - - - - - - diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/src/main/java/com/alibaba/cloud/examples/RulesController.java b/spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/src/main/java/com/alibaba/cloud/examples/RulesController.java deleted file mode 100644 index 5475bcdd..00000000 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/src/main/java/com/alibaba/cloud/examples/RulesController.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * 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 - * - * https://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 com.alibaba.cloud.examples; - -import java.util.List; -import java.util.Set; - -import com.alibaba.csp.sentinel.adapter.gateway.common.api.ApiDefinition; -import com.alibaba.csp.sentinel.adapter.gateway.common.api.GatewayApiDefinitionManager; -import com.alibaba.csp.sentinel.adapter.gateway.common.rule.GatewayFlowRule; -import com.alibaba.csp.sentinel.adapter.gateway.common.rule.GatewayRuleManager; -import com.alibaba.csp.sentinel.slots.block.flow.FlowRule; -import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager; - -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * @author Jim - */ -@RestController -public class RulesController { - - @GetMapping("/api") - public Set apiRules() { - return GatewayApiDefinitionManager.getApiDefinitions(); - } - - @GetMapping("/gateway") - public Set apiGateway() { - return GatewayRuleManager.getRules(); - } - - @GetMapping("/flow") - public List apiFlow() { - return FlowRuleManager.getRules(); - } - -} diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/src/main/java/com/alibaba/cloud/examples/SentinelZuulApplication.java b/spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/src/main/java/com/alibaba/cloud/examples/SentinelZuulApplication.java deleted file mode 100644 index 476cbb05..00000000 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/src/main/java/com/alibaba/cloud/examples/SentinelZuulApplication.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * 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 - * - * https://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 com.alibaba.cloud.examples; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.netflix.zuul.EnableZuulProxy; - -/** - * @author Jim - */ -@SpringBootApplication -@EnableZuulProxy -public class SentinelZuulApplication { - - public static void main(String[] args) { - SpringApplication.run(SentinelZuulApplication.class, args); - } - -} diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/src/main/java/com/alibaba/cloud/examples/ZuulConfiguration.java b/spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/src/main/java/com/alibaba/cloud/examples/ZuulConfiguration.java deleted file mode 100644 index 9dccb6b2..00000000 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/src/main/java/com/alibaba/cloud/examples/ZuulConfiguration.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * 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 - * - * https://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 com.alibaba.cloud.examples; - -import javax.servlet.http.HttpServletRequest; - -import com.alibaba.csp.sentinel.adapter.gateway.zuul.callback.RequestOriginParser; -import com.alibaba.csp.sentinel.adapter.gateway.zuul.fallback.BlockResponse; -import com.alibaba.csp.sentinel.adapter.gateway.zuul.fallback.ZuulBlockFallbackProvider; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * @author Jim - */ -@Configuration -public class ZuulConfiguration { - - @Bean - public ZuulBlockFallbackProvider zuulBlockFallbackProvider1() { - return new ZuulBlockFallbackProvider() { - @Override - public String getRoute() { - return "*"; - } - - @Override - public BlockResponse fallbackResponse(String route, Throwable cause) { - if ("my-service3".equals(route)) { - return new BlockResponse(433, "Sentinel Block3", route); - } - else if ("my-service4".equals(route)) { - return new BlockResponse(444, "my-service4", route); - } - else { - return new BlockResponse(499, "Sentinel Block 499", route); - } - } - }; - } - - @Bean - public RequestOriginParser requestOriginParser() { - return new RequestOriginParser() { - - @Override - public String parseOrigin(HttpServletRequest request) { - return "123"; - } - }; - } - -} diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/src/main/resources/api.json b/spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/src/main/resources/api.json deleted file mode 100644 index 6de3c4fb..00000000 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/src/main/resources/api.json +++ /dev/null @@ -1,32 +0,0 @@ -[ - { - "apiName": "some_customized_api", - "predicateItems": [ - { - "pattern": "/product/baz" - }, - { - "pattern": "/product/foo/**", - "matchStrategy": 1 - }, - { - "items": [ - { - "pattern": "/spring-cloud/**" - }, - { - "pattern": "/spring-cloud-alibaba/**" - } - ] - } - ] - }, - { - "apiName": "another_customized_api", - "predicateItems": [ - { - "pattern": "/ahas" - } - ] - } -] diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/src/main/resources/application.yaml b/spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/src/main/resources/application.yaml deleted file mode 100644 index 0e9d9abf..00000000 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/src/main/resources/application.yaml +++ /dev/null @@ -1,40 +0,0 @@ -server: - port: 18086 -spring: - application: - name: sentinel-zuul - cloud: - sentinel: - datasource.ds2.file: - file: "classpath: gateway.json" - ruleType: gw-flow - datasource.ds1.file: - file: "classpath: api.json" - ruleType: gw-api-group - transport: - dashboard: localhost:8080 - filter: - enabled: false - -management.endpoints.web.exposure.include: "*" - - -zuul.routes.my-service.path: "/product/foo/**" -zuul.routes.my-service.service-id: "my-service" - -zuul.routes.my-service2.path: "/my-service2/**" -zuul.routes.my-service2.service-id: "my-service2" - -zuul.routes.my-service3.path: "/my-service3/**" -zuul.routes.my-service3.service-id: "my-service3" - -zuul.routes.my-service4.path: "/my-service4/**" -zuul.routes.my-service4.service-id: "my-service4" - - -spring.cloud.sentinel.zuul.order.pre: 2000 -spring.cloud.sentinel.zuul.order.post: 500 -spring.cloud.sentinel.zuul.order.error: -100 - - -spring.cloud.sentinel.zuul.enabled: true \ No newline at end of file diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/src/main/resources/gateway.json b/spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/src/main/resources/gateway.json deleted file mode 100644 index b3effe88..00000000 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-zuul-example/src/main/resources/gateway.json +++ /dev/null @@ -1,26 +0,0 @@ -[ - { - "resource": "some_customized_api", - "count": 0 - }, - { - "resource": "my-service2", - "count": 0 - }, - { - "resource": "my-service3", - "count": 0, - "paramItem": { - "parseStrategy": 2, - "fieldName": "Spring-Cloud-Alibaba" - } - }, - { - "resource": "my-service4", - "count": 0, - "paramItem": { - "parseStrategy": 3, - "fieldName": "name" - } - } -] From e7521c02c9c0229810ae480a7561665e8ddacbc2 Mon Sep 17 00:00:00 2001 From: theonefx Date: Tue, 23 Feb 2021 18:06:31 +0800 Subject: [PATCH 06/15] 2020 build done, unit test failed --- pom.xml | 22 +- spring-cloud-alibaba-dependencies/pom.xml | 2 +- .../pom.xml | 5 + .../examples/ConsumerSCLBApplication.java | 20 +- .../fallback/EchoServiceFallback.java | 44 ---- .../fallback/EchoServiceFallbackFactory.java | 34 --- .../cloud/examples/service/EchoService.java | 5 +- .../pom.xml | 6 + .../zuul/SentinelZuulAutoConfiguration.java | 204 +++++++++--------- .../main/resources/META-INF/spring.factories | 1 - .../pom.xml | 6 + .../ribbon/ConditionalOnRibbonNacos.java | 31 --- .../cloud/nacos/ribbon/ExtendBalancer.java | 38 ---- .../NacosRibbonClientConfiguration.java | 62 ------ .../alibaba/cloud/nacos/ribbon/NacosRule.java | 100 --------- .../cloud/nacos/ribbon/NacosServer.java | 76 ------- .../nacos/ribbon/NacosServerIntrospector.java | 47 ---- .../cloud/nacos/ribbon/NacosServerList.java | 87 -------- .../ribbon/RibbonNacosAutoConfiguration.java | 42 ---- .../main/resources/META-INF/spring.factories | 1 - .../NacosRibbonClientConfigurationTests.java | 78 ------- ...acosRibbonClientPropertyOverrideTests.java | 81 ------- .../nacos/ribbon/NacosServerListTests.java | 165 -------------- .../SeataFeignBlockingLoadBalancerClient.java | 10 +- .../SeataFeignClientAutoConfiguration.java | 14 +- .../seata/feign/SeataFeignObjectWrapper.java | 55 ++--- .../seata/feign/SeataHystrixFeignBuilder.java | 76 +++---- .../feign/SeataLoadBalancerFeignClient.java | 93 ++++---- .../SeataHystrixAutoConfiguration.java | 37 ---- .../SeataHystrixConcurrencyStrategy.java | 175 --------------- .../main/resources/META-INF/spring.factories | 3 +- .../pom.xml | 12 ++ .../cloud/sentinel/feign/SentinelFeign.java | 62 +++--- .../feign/SentinelInvocationHandler.java | 32 +-- .../sentinel/ContextIdSentinelFeignTests.java | 3 +- .../cloud/sentinel/SentinelFeignTests.java | 3 +- .../consul/SidecarConsulAutoRegistration.java | 2 +- .../SidecarNacosDiscoveryProperties.java | 2 +- .../RocketMQBusEnvironmentPostProcessor.java | 2 +- .../pom.xml | 7 + .../integration/RocketMQMessageHandler.java | 2 +- 41 files changed, 339 insertions(+), 1408 deletions(-) delete mode 100644 spring-cloud-alibaba-examples/sentinel-example/sentinel-feign-example/sentinel-feign-consumer-example/src/main/java/com/alibaba/cloud/examples/fallback/EchoServiceFallback.java delete mode 100644 spring-cloud-alibaba-examples/sentinel-example/sentinel-feign-example/sentinel-feign-consumer-example/src/main/java/com/alibaba/cloud/examples/fallback/EchoServiceFallbackFactory.java delete mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/ConditionalOnRibbonNacos.java delete mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/ExtendBalancer.java delete mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/NacosRibbonClientConfiguration.java delete mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/NacosRule.java delete mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/NacosServer.java delete mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/NacosServerIntrospector.java delete mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/NacosServerList.java delete mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/RibbonNacosAutoConfiguration.java delete mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/ribbon/NacosRibbonClientConfigurationTests.java delete mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/ribbon/NacosRibbonClientPropertyOverrideTests.java delete mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/ribbon/NacosServerListTests.java delete mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/hystrix/SeataHystrixAutoConfiguration.java delete mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/hystrix/SeataHystrixConcurrencyStrategy.java diff --git a/pom.xml b/pom.xml index 027f8925..c8dc2134 100644 --- a/pom.xml +++ b/pom.xml @@ -80,7 +80,7 @@ - 2.2.6-SNAPSHOT + 2021.1-SNAPSHOT 2020.0.1 @@ -195,6 +195,21 @@ jacoco-maven-plugin ${jacoco.version} + + + + io.spring.javaformat + spring-javaformat-maven-plugin + ${spring-javaformat.version} + + + validate + + true + + + + @@ -219,10 +234,6 @@ - - io.spring.javaformat - spring-javaformat-maven-plugin - org.apache.maven.plugins maven-checkstyle-plugin @@ -241,6 +252,7 @@ true true warning + true diff --git a/spring-cloud-alibaba-dependencies/pom.xml b/spring-cloud-alibaba-dependencies/pom.xml index 18599e51..1302d875 100644 --- a/spring-cloud-alibaba-dependencies/pom.xml +++ b/spring-cloud-alibaba-dependencies/pom.xml @@ -18,7 +18,7 @@ Spring Cloud Alibaba Dependencies - 2.2.6-SNAPSHOT + 2021.1-SNAPSHOT 1.8.0 1.3.0 1.4.1 diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/pom.xml b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/pom.xml index 2771c802..fd026389 100644 --- a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/pom.xml +++ b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/pom.xml @@ -47,6 +47,11 @@ spring-cloud-starter-alibaba-sentinel + + org.springframework.cloud + spring-cloud-commons + + org.springframework.cloud spring-cloud-starter-openfeign diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/src/main/java/com/alibaba/cloud/examples/ConsumerSCLBApplication.java b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/src/main/java/com/alibaba/cloud/examples/ConsumerSCLBApplication.java index 9cb57f9b..2407d7ea 100644 --- a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/src/main/java/com/alibaba/cloud/examples/ConsumerSCLBApplication.java +++ b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/src/main/java/com/alibaba/cloud/examples/ConsumerSCLBApplication.java @@ -32,11 +32,10 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.client.loadbalancer.EmptyResponse; import org.springframework.cloud.client.loadbalancer.LoadBalanced; -import org.springframework.cloud.client.loadbalancer.reactive.DefaultResponse; -import org.springframework.cloud.client.loadbalancer.reactive.EmptyResponse; -import org.springframework.cloud.client.loadbalancer.reactive.Request; -import org.springframework.cloud.client.loadbalancer.reactive.Response; +import org.springframework.cloud.client.loadbalancer.Response; +import org.springframework.cloud.client.loadbalancer.DefaultResponse; import org.springframework.cloud.loadbalancer.annotation.LoadBalancerClient; import org.springframework.cloud.loadbalancer.core.NoopServiceInstanceListSupplier; import org.springframework.cloud.loadbalancer.core.ReactorServiceInstanceLoadBalancer; @@ -103,9 +102,17 @@ public class ConsumerSCLBApplication { this.random = new Random(); } + @Override - public Mono> choose(Request request) { - log.info("random spring cloud loadbalacer active -.-"); + public Mono> choose(org.springframework.cloud.client.loadbalancer.Request request) { + ServiceInstanceListSupplier supplier = serviceInstanceListSupplierProvider + .getIfAvailable(NoopServiceInstanceListSupplier::new); + + return supplier.get().next().map(this::getInstanceResponse); + } + + @Override + public Mono> choose() { ServiceInstanceListSupplier supplier = serviceInstanceListSupplierProvider .getIfAvailable(NoopServiceInstanceListSupplier::new); return supplier.get().next().map(this::getInstanceResponse); @@ -120,7 +127,6 @@ public class ConsumerSCLBApplication { return new DefaultResponse(instance); } - } @FeignClient(name = "service-provider", fallback = EchoServiceFallback.class, diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-feign-example/sentinel-feign-consumer-example/src/main/java/com/alibaba/cloud/examples/fallback/EchoServiceFallback.java b/spring-cloud-alibaba-examples/sentinel-example/sentinel-feign-example/sentinel-feign-consumer-example/src/main/java/com/alibaba/cloud/examples/fallback/EchoServiceFallback.java deleted file mode 100644 index 2e6a9aab..00000000 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-feign-example/sentinel-feign-consumer-example/src/main/java/com/alibaba/cloud/examples/fallback/EchoServiceFallback.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * 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 - * - * https://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 com.alibaba.cloud.examples.fallback; - -import com.alibaba.cloud.examples.service.EchoService; - -/** - * @author lengleng - *

- * sentinel 降级处理 - */ -public class EchoServiceFallback implements EchoService { - - private Throwable throwable; - - EchoServiceFallback(Throwable throwable) { - this.throwable = throwable; - } - - /** - * 调用服务提供方的输出接口. - * @param str 用户输入 - * @return String - */ - @Override - public String echo(String str) { - return "consumer-fallback-default-str" + throwable.getMessage(); - } - -} diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-feign-example/sentinel-feign-consumer-example/src/main/java/com/alibaba/cloud/examples/fallback/EchoServiceFallbackFactory.java b/spring-cloud-alibaba-examples/sentinel-example/sentinel-feign-example/sentinel-feign-consumer-example/src/main/java/com/alibaba/cloud/examples/fallback/EchoServiceFallbackFactory.java deleted file mode 100644 index 9df335d2..00000000 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-feign-example/sentinel-feign-consumer-example/src/main/java/com/alibaba/cloud/examples/fallback/EchoServiceFallbackFactory.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * 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 - * - * https://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 com.alibaba.cloud.examples.fallback; - -import feign.hystrix.FallbackFactory; - -import org.springframework.stereotype.Component; - -/** - * @author lengleng - */ -@Component -public class EchoServiceFallbackFactory implements FallbackFactory { - - @Override - public EchoServiceFallback create(Throwable throwable) { - return new EchoServiceFallback(throwable); - } - -} diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-feign-example/sentinel-feign-consumer-example/src/main/java/com/alibaba/cloud/examples/service/EchoService.java b/spring-cloud-alibaba-examples/sentinel-example/sentinel-feign-example/sentinel-feign-consumer-example/src/main/java/com/alibaba/cloud/examples/service/EchoService.java index 0745d15d..dbfe2312 100644 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-feign-example/sentinel-feign-consumer-example/src/main/java/com/alibaba/cloud/examples/service/EchoService.java +++ b/spring-cloud-alibaba-examples/sentinel-example/sentinel-feign-example/sentinel-feign-consumer-example/src/main/java/com/alibaba/cloud/examples/service/EchoService.java @@ -16,8 +16,6 @@ package com.alibaba.cloud.examples.service; -import com.alibaba.cloud.examples.fallback.EchoServiceFallbackFactory; - import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -27,8 +25,7 @@ import org.springframework.web.bind.annotation.PathVariable; *

* example feign client */ -@FeignClient(name = "service-provider", - fallbackFactory = EchoServiceFallbackFactory.class) +@FeignClient(name = "service-provider") public interface EchoService { /** diff --git a/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-datasource/pom.xml b/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-datasource/pom.xml index 080a35d0..59b79118 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-datasource/pom.xml +++ b/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-datasource/pom.xml @@ -137,6 +137,12 @@ test + + junit + junit + test + + diff --git a/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/src/main/java/com/alibaba/cloud/sentinel/gateway/zuul/SentinelZuulAutoConfiguration.java b/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/src/main/java/com/alibaba/cloud/sentinel/gateway/zuul/SentinelZuulAutoConfiguration.java index 3f6cbd6c..6e57ae5f 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/src/main/java/com/alibaba/cloud/sentinel/gateway/zuul/SentinelZuulAutoConfiguration.java +++ b/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/src/main/java/com/alibaba/cloud/sentinel/gateway/zuul/SentinelZuulAutoConfiguration.java @@ -1,102 +1,102 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * 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 - * - * https://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 com.alibaba.cloud.sentinel.gateway.zuul; - -import java.util.Optional; - -import javax.annotation.PostConstruct; - -import com.alibaba.cloud.sentinel.gateway.ConfigConstants; -import com.alibaba.csp.sentinel.adapter.gateway.zuul.callback.RequestOriginParser; -import com.alibaba.csp.sentinel.adapter.gateway.zuul.callback.ZuulGatewayCallbackManager; -import com.alibaba.csp.sentinel.adapter.gateway.zuul.filters.SentinelZuulErrorFilter; -import com.alibaba.csp.sentinel.adapter.gateway.zuul.filters.SentinelZuulPostFilter; -import com.alibaba.csp.sentinel.adapter.gateway.zuul.filters.SentinelZuulPreFilter; -import com.alibaba.csp.sentinel.config.SentinelConfig; -import com.netflix.zuul.http.ZuulServlet; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.support.DefaultListableBeanFactory; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * Sentinel Spring Cloud Zuul AutoConfiguration. - * - * @author tiger - */ -@Configuration(proxyBeanMethods = false) -@ConditionalOnClass(ZuulServlet.class) -@ConditionalOnProperty(prefix = ConfigConstants.ZUUL_PREFIX, name = "enabled", - havingValue = "true", matchIfMissing = true) -@EnableConfigurationProperties(SentinelZuulProperties.class) -public class SentinelZuulAutoConfiguration { - - private static final Logger logger = LoggerFactory - .getLogger(SentinelZuulAutoConfiguration.class); - - @Autowired - private Optional requestOriginParserOptional; - - @Autowired - private SentinelZuulProperties zuulProperties; - - @PostConstruct - private void init() { - requestOriginParserOptional - .ifPresent(ZuulGatewayCallbackManager::setOriginParser); - System.setProperty(SentinelConfig.APP_TYPE_PROP_KEY, - String.valueOf(ConfigConstants.APP_TYPE_ZUUL_GATEWAY)); - } - - @Bean - @ConditionalOnMissingBean - public SentinelZuulPreFilter sentinelZuulPreFilter() { - logger.info("[Sentinel Zuul] register SentinelZuulPreFilter {}", - zuulProperties.getOrder().getPre()); - return new SentinelZuulPreFilter(zuulProperties.getOrder().getPre()); - } - - @Bean - @ConditionalOnMissingBean - public SentinelZuulPostFilter sentinelZuulPostFilter() { - logger.info("[Sentinel Zuul] register SentinelZuulPostFilter {}", - zuulProperties.getOrder().getPost()); - return new SentinelZuulPostFilter(zuulProperties.getOrder().getPost()); - } - - @Bean - @ConditionalOnMissingBean - public SentinelZuulErrorFilter sentinelZuulErrorFilter() { - logger.info("[Sentinel Zuul] register SentinelZuulErrorFilter {}", - zuulProperties.getOrder().getError()); - return new SentinelZuulErrorFilter(zuulProperties.getOrder().getError()); - } - - @Bean - public FallBackProviderHandler fallBackProviderHandler( - DefaultListableBeanFactory beanFactory) { - return new FallBackProviderHandler(beanFactory); - } - -} +///* +// * Copyright 2013-2018 the original author or authors. +// * +// * 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 +// * +// * https://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 com.alibaba.cloud.sentinel.gateway.zuul; +// +//import java.util.Optional; +// +//import javax.annotation.PostConstruct; +// +//import com.alibaba.cloud.sentinel.gateway.ConfigConstants; +//import com.alibaba.csp.sentinel.adapter.gateway.zuul.callback.RequestOriginParser; +//import com.alibaba.csp.sentinel.adapter.gateway.zuul.callback.ZuulGatewayCallbackManager; +//import com.alibaba.csp.sentinel.adapter.gateway.zuul.filters.SentinelZuulErrorFilter; +//import com.alibaba.csp.sentinel.adapter.gateway.zuul.filters.SentinelZuulPostFilter; +//import com.alibaba.csp.sentinel.adapter.gateway.zuul.filters.SentinelZuulPreFilter; +//import com.alibaba.csp.sentinel.config.SentinelConfig; +//import com.netflix.zuul.http.ZuulServlet; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +// +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.beans.factory.support.DefaultListableBeanFactory; +//import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +//import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +//import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +//import org.springframework.boot.context.properties.EnableConfigurationProperties; +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +// +///** +// * Sentinel Spring Cloud Zuul AutoConfiguration. +// * +// * @author tiger +// */ +//@Configuration(proxyBeanMethods = false) +//@ConditionalOnClass(ZuulServlet.class) +//@ConditionalOnProperty(prefix = ConfigConstants.ZUUL_PREFIX, name = "enabled", +// havingValue = "true", matchIfMissing = true) +//@EnableConfigurationProperties(SentinelZuulProperties.class) +//public class SentinelZuulAutoConfiguration { +// +// private static final Logger logger = LoggerFactory +// .getLogger(SentinelZuulAutoConfiguration.class); +// +// @Autowired +// private Optional requestOriginParserOptional; +// +// @Autowired +// private SentinelZuulProperties zuulProperties; +// +// @PostConstruct +// private void init() { +// requestOriginParserOptional +// .ifPresent(ZuulGatewayCallbackManager::setOriginParser); +// System.setProperty(SentinelConfig.APP_TYPE_PROP_KEY, +// String.valueOf(ConfigConstants.APP_TYPE_ZUUL_GATEWAY)); +// } +// +// @Bean +// @ConditionalOnMissingBean +// public SentinelZuulPreFilter sentinelZuulPreFilter() { +// logger.info("[Sentinel Zuul] register SentinelZuulPreFilter {}", +// zuulProperties.getOrder().getPre()); +// return new SentinelZuulPreFilter(zuulProperties.getOrder().getPre()); +// } +// +// @Bean +// @ConditionalOnMissingBean +// public SentinelZuulPostFilter sentinelZuulPostFilter() { +// logger.info("[Sentinel Zuul] register SentinelZuulPostFilter {}", +// zuulProperties.getOrder().getPost()); +// return new SentinelZuulPostFilter(zuulProperties.getOrder().getPost()); +// } +// +// @Bean +// @ConditionalOnMissingBean +// public SentinelZuulErrorFilter sentinelZuulErrorFilter() { +// logger.info("[Sentinel Zuul] register SentinelZuulErrorFilter {}", +// zuulProperties.getOrder().getError()); +// return new SentinelZuulErrorFilter(zuulProperties.getOrder().getError()); +// } +// +// @Bean +// public FallBackProviderHandler fallBackProviderHandler( +// DefaultListableBeanFactory beanFactory) { +// return new FallBackProviderHandler(beanFactory); +// } +// +//} diff --git a/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/src/main/resources/META-INF/spring.factories b/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/src/main/resources/META-INF/spring.factories index 1cb4c57b..eb9e6831 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/src/main/resources/META-INF/spring.factories +++ b/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/src/main/resources/META-INF/spring.factories @@ -1,5 +1,4 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -com.alibaba.cloud.sentinel.gateway.zuul.SentinelZuulAutoConfiguration,\ com.alibaba.cloud.sentinel.gateway.scg.SentinelSCGAutoConfiguration,\ com.alibaba.cloud.sentinel.gateway.SentinelGatewayAutoConfiguration org.springframework.boot.env.EnvironmentPostProcessor=com.alibaba.cloud.sentinel.gateway.GatewayEnvironmentPostProcessor \ No newline at end of file diff --git a/spring-cloud-alibaba-starters/spring-cloud-circuitbreaker-sentinel/pom.xml b/spring-cloud-alibaba-starters/spring-cloud-circuitbreaker-sentinel/pom.xml index 90f0f0ff..c110ceff 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-circuitbreaker-sentinel/pom.xml +++ b/spring-cloud-alibaba-starters/spring-cloud-circuitbreaker-sentinel/pom.xml @@ -62,6 +62,12 @@ test + + junit + junit + test + + diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/ConditionalOnRibbonNacos.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/ConditionalOnRibbonNacos.java deleted file mode 100644 index 1cbdb659..00000000 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/ConditionalOnRibbonNacos.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * 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 - * - * https://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 com.alibaba.cloud.nacos.ribbon; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; - -@Retention(RetentionPolicy.RUNTIME) -@Target({ ElementType.TYPE, ElementType.METHOD }) -@ConditionalOnProperty(value = "ribbon.nacos.enabled", matchIfMissing = true) -public @interface ConditionalOnRibbonNacos { - -} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/ExtendBalancer.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/ExtendBalancer.java deleted file mode 100644 index e52278cb..00000000 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/ExtendBalancer.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * 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 - * - * https://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 com.alibaba.cloud.nacos.ribbon; - -import java.util.List; - -import com.alibaba.nacos.api.naming.pojo.Instance; -import com.alibaba.nacos.client.naming.core.Balancer; - -/** - * @author itmuch.com - */ -public class ExtendBalancer extends Balancer { - - /** - * Choose instance by weight. - * @param instances Instance List - * @return the chosen instance - */ - public static Instance getHostByRandomWeight2(List instances) { - return getHostByRandomWeight(instances); - } - -} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/NacosRibbonClientConfiguration.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/NacosRibbonClientConfiguration.java deleted file mode 100644 index a6294e87..00000000 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/NacosRibbonClientConfiguration.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * 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 - * - * https://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 com.alibaba.cloud.nacos.ribbon; - -import com.alibaba.cloud.nacos.NacosDiscoveryProperties; -import com.netflix.client.config.IClientConfig; -import com.netflix.loadbalancer.ServerList; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.cloud.netflix.ribbon.PropertiesFactory; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * integrated Ribbon by default. - * - * @author xiaojing - * @author liujunjie - */ -@Configuration(proxyBeanMethods = false) -@ConditionalOnRibbonNacos -public class NacosRibbonClientConfiguration { - - @Autowired - private PropertiesFactory propertiesFactory; - - @Bean - @ConditionalOnMissingBean - public ServerList ribbonServerList(IClientConfig config, - NacosDiscoveryProperties nacosDiscoveryProperties) { - if (this.propertiesFactory.isSet(ServerList.class, config.getClientName())) { - ServerList serverList = this.propertiesFactory.get(ServerList.class, config, - config.getClientName()); - return serverList; - } - NacosServerList serverList = new NacosServerList(nacosDiscoveryProperties); - serverList.initWithNiwsConfig(config); - return serverList; - } - - @Bean - @ConditionalOnMissingBean - public NacosServerIntrospector nacosServerIntrospector() { - return new NacosServerIntrospector(); - } - -} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/NacosRule.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/NacosRule.java deleted file mode 100644 index 9873b8db..00000000 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/NacosRule.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * 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 - * - * https://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 com.alibaba.cloud.nacos.ribbon; - -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - -import com.alibaba.cloud.commons.lang.StringUtils; -import com.alibaba.cloud.nacos.NacosDiscoveryProperties; -import com.alibaba.cloud.nacos.NacosServiceManager; -import com.alibaba.nacos.api.naming.NamingService; -import com.alibaba.nacos.api.naming.pojo.Instance; -import com.netflix.client.config.IClientConfig; -import com.netflix.loadbalancer.AbstractLoadBalancerRule; -import com.netflix.loadbalancer.DynamicServerListLoadBalancer; -import com.netflix.loadbalancer.Server; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.util.CollectionUtils; - -/** - * Supports preferentially calling the ribbon load balancing rules of the same cluster - * instance. - * - * @author itmuch.com - */ -public class NacosRule extends AbstractLoadBalancerRule { - - private static final Logger LOGGER = LoggerFactory.getLogger(NacosRule.class); - - @Autowired - private NacosDiscoveryProperties nacosDiscoveryProperties; - - @Autowired - private NacosServiceManager nacosServiceManager; - - @Override - public Server choose(Object key) { - try { - String clusterName = this.nacosDiscoveryProperties.getClusterName(); - String group = this.nacosDiscoveryProperties.getGroup(); - DynamicServerListLoadBalancer loadBalancer = (DynamicServerListLoadBalancer) getLoadBalancer(); - String name = loadBalancer.getName(); - - NamingService namingService = nacosServiceManager - .getNamingService(nacosDiscoveryProperties.getNacosProperties()); - List instances = namingService.selectInstances(name, group, true); - if (CollectionUtils.isEmpty(instances)) { - LOGGER.warn("no instance in service {}", name); - return null; - } - - List instancesToChoose = instances; - if (StringUtils.isNotBlank(clusterName)) { - List sameClusterInstances = instances.stream() - .filter(instance -> Objects.equals(clusterName, - instance.getClusterName())) - .collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(sameClusterInstances)) { - instancesToChoose = sameClusterInstances; - } - else { - LOGGER.warn( - "A cross-cluster call occurs,name = {}, clusterName = {}, instance = {}", - name, clusterName, instances); - } - } - - Instance instance = ExtendBalancer.getHostByRandomWeight2(instancesToChoose); - - return new NacosServer(instance); - } - catch (Exception e) { - LOGGER.warn("NacosRule error", e); - return null; - } - } - - @Override - public void initWithNiwsConfig(IClientConfig iClientConfig) { - } - -} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/NacosServer.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/NacosServer.java deleted file mode 100644 index 9c292a9a..00000000 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/NacosServer.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * 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 - * - * https://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 com.alibaba.cloud.nacos.ribbon; - -import java.util.Map; - -import com.alibaba.nacos.api.naming.pojo.Instance; -import com.netflix.loadbalancer.Server; - -/** - * @author xiaojing - * @author pbting - */ -public class NacosServer extends Server { - - private final MetaInfo metaInfo; - - private final Instance instance; - - private final Map metadata; - - public NacosServer(final Instance instance) { - super(instance.getIp(), instance.getPort()); - this.instance = instance; - this.metaInfo = new MetaInfo() { - @Override - public String getAppName() { - return instance.getServiceName(); - } - - @Override - public String getServerGroup() { - return null; - } - - @Override - public String getServiceIdForDiscovery() { - return null; - } - - @Override - public String getInstanceId() { - return instance.getInstanceId(); - } - }; - this.metadata = instance.getMetadata(); - } - - @Override - public MetaInfo getMetaInfo() { - return metaInfo; - } - - public Instance getInstance() { - return instance; - } - - public Map getMetadata() { - return metadata; - } - -} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/NacosServerIntrospector.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/NacosServerIntrospector.java deleted file mode 100644 index d186446d..00000000 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/NacosServerIntrospector.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * 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 - * - * https://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 com.alibaba.cloud.nacos.ribbon; - -import java.util.Map; - -import com.netflix.loadbalancer.Server; - -import org.springframework.cloud.netflix.ribbon.DefaultServerIntrospector; - -/** - * @author xiaojing - */ -public class NacosServerIntrospector extends DefaultServerIntrospector { - - @Override - public Map getMetadata(Server server) { - if (server instanceof NacosServer) { - return ((NacosServer) server).getMetadata(); - } - return super.getMetadata(server); - } - - @Override - public boolean isSecure(Server server) { - if (server instanceof NacosServer) { - return Boolean.valueOf(((NacosServer) server).getMetadata().get("secure")); - } - - return super.isSecure(server); - } - -} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/NacosServerList.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/NacosServerList.java deleted file mode 100644 index 55928f26..00000000 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/NacosServerList.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * 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 - * - * https://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 com.alibaba.cloud.nacos.ribbon; - -import java.util.ArrayList; -import java.util.List; - -import com.alibaba.cloud.nacos.NacosDiscoveryProperties; -import com.alibaba.nacos.api.naming.pojo.Instance; -import com.alibaba.nacos.client.naming.utils.CollectionUtils; -import com.netflix.client.config.IClientConfig; -import com.netflix.loadbalancer.AbstractServerList; - -/** - * @author xiaojing - * @author renhaojun - */ -public class NacosServerList extends AbstractServerList { - - private NacosDiscoveryProperties discoveryProperties; - - private String serviceId; - - public NacosServerList(NacosDiscoveryProperties discoveryProperties) { - this.discoveryProperties = discoveryProperties; - } - - @Override - public List getInitialListOfServers() { - return getServers(); - } - - @Override - public List getUpdatedListOfServers() { - return getServers(); - } - - private List getServers() { - try { - String group = discoveryProperties.getGroup(); - List instances = discoveryProperties.namingServiceInstance() - .selectInstances(serviceId, group, true); - return instancesToServerList(instances); - } - catch (Exception e) { - throw new IllegalStateException( - "Can not get service instances from nacos, serviceId=" + serviceId, - e); - } - } - - private List instancesToServerList(List instances) { - List result = new ArrayList<>(); - if (CollectionUtils.isEmpty(instances)) { - return result; - } - for (Instance instance : instances) { - result.add(new NacosServer(instance)); - } - - return result; - } - - public String getServiceId() { - return serviceId; - } - - @Override - public void initWithNiwsConfig(IClientConfig iClientConfig) { - this.serviceId = iClientConfig.getClientName(); - } - -} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/RibbonNacosAutoConfiguration.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/RibbonNacosAutoConfiguration.java deleted file mode 100644 index 4b504d3a..00000000 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/ribbon/RibbonNacosAutoConfiguration.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * 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 - * - * https://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 com.alibaba.cloud.nacos.ribbon; - -import com.alibaba.cloud.nacos.ConditionalOnNacosDiscoveryEnabled; - -import org.springframework.boot.autoconfigure.AutoConfigureAfter; -import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.cloud.netflix.ribbon.RibbonAutoConfiguration; -import org.springframework.cloud.netflix.ribbon.RibbonClients; -import org.springframework.cloud.netflix.ribbon.SpringClientFactory; -import org.springframework.context.annotation.Configuration; - -/** - * {@link org.springframework.boot.autoconfigure.EnableAutoConfiguration - * Auto-configuration} that sets up Ribbon for Nacos. - */ -@Configuration(proxyBeanMethods = false) -@EnableConfigurationProperties -@ConditionalOnBean(SpringClientFactory.class) -@ConditionalOnRibbonNacos -@ConditionalOnNacosDiscoveryEnabled -@AutoConfigureAfter(RibbonAutoConfiguration.class) -@RibbonClients(defaultConfiguration = NacosRibbonClientConfiguration.class) -public class RibbonNacosAutoConfiguration { - -} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/resources/META-INF/spring.factories b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/resources/META-INF/spring.factories index 80befe75..48ae045e 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/resources/META-INF/spring.factories +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/resources/META-INF/spring.factories @@ -1,6 +1,5 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.alibaba.cloud.nacos.discovery.NacosDiscoveryAutoConfiguration,\ - com.alibaba.cloud.nacos.ribbon.RibbonNacosAutoConfiguration,\ com.alibaba.cloud.nacos.endpoint.NacosDiscoveryEndpointAutoConfiguration,\ com.alibaba.cloud.nacos.registry.NacosServiceRegistryAutoConfiguration,\ com.alibaba.cloud.nacos.discovery.NacosDiscoveryClientConfiguration,\ diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/ribbon/NacosRibbonClientConfigurationTests.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/ribbon/NacosRibbonClientConfigurationTests.java deleted file mode 100644 index 0256f4fb..00000000 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/ribbon/NacosRibbonClientConfigurationTests.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * 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 - * - * https://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 com.alibaba.cloud.nacos.ribbon; - -import com.alibaba.cloud.nacos.discovery.NacosDiscoveryClientConfiguration; -import com.netflix.client.config.DefaultClientConfigImpl; -import com.netflix.client.config.IClientConfig; -import org.junit.Test; - -import org.springframework.boot.autoconfigure.AutoConfigurations; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.test.context.runner.WebApplicationContextRunner; -import org.springframework.cloud.client.discovery.EnableDiscoveryClient; -import org.springframework.cloud.client.loadbalancer.LoadBalanced; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.client.RestTemplate; - -import static org.assertj.core.api.Assertions.assertThat; - -/** - * @author xiaojing - */ -public class NacosRibbonClientConfigurationTests { - - private WebApplicationContextRunner contextRunner = new WebApplicationContextRunner() - .withConfiguration(AutoConfigurations.of(NacosRibbonTestConfiguration.class, - NacosRibbonClientConfiguration.class, - NacosDiscoveryClientConfiguration.class, - RibbonNacosAutoConfiguration.class)) - .withPropertyValues("spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848") - .withPropertyValues("spring.cloud.nacos.discovery.port=18080") - .withPropertyValues("spring.cloud.nacos.discovery.service=myapp"); - - @Test - public void testProperties() { - - this.contextRunner.run(context -> { - NacosServerList serverList = context.getBean(NacosServerList.class); - assertThat(serverList.getServiceId()).isEqualTo("myapp"); - }); - } - - @Configuration - @EnableAutoConfiguration - @EnableDiscoveryClient - static class NacosRibbonTestConfiguration { - - @Bean - IClientConfig iClientConfig() { - DefaultClientConfigImpl config = new DefaultClientConfigImpl(); - config.setClientName("myapp"); - return config; - } - - @Bean - @LoadBalanced - RestTemplate restTemplate() { - return new RestTemplate(); - } - - } - -} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/ribbon/NacosRibbonClientPropertyOverrideTests.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/ribbon/NacosRibbonClientPropertyOverrideTests.java deleted file mode 100644 index 3692414f..00000000 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/ribbon/NacosRibbonClientPropertyOverrideTests.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2013-2017 the original author or authors. - * - * 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 - * - * https://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 com.alibaba.cloud.nacos.ribbon; - -import com.alibaba.cloud.nacos.discovery.NacosDiscoveryClientConfiguration; -import com.netflix.loadbalancer.ConfigurationBasedServerList; -import com.netflix.loadbalancer.Server; -import com.netflix.loadbalancer.ZoneAwareLoadBalancer; -import org.junit.Test; -import org.junit.runner.RunWith; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.autoconfigure.ImportAutoConfiguration; -import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.cloud.commons.util.UtilAutoConfiguration; -import org.springframework.cloud.netflix.archaius.ArchaiusAutoConfiguration; -import org.springframework.cloud.netflix.ribbon.RibbonClients; -import org.springframework.cloud.netflix.ribbon.SpringClientFactory; -import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.junit4.SpringRunner; - -/** - * @author liujunjie - */ -@RunWith(SpringRunner.class) -@SpringBootTest(classes = NacosRibbonClientPropertyOverrideTests.TestConfiguration.class, - properties = { "spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848", - "spring.cloud.nacos.discovery.port=18080", - "spring.cloud.nacos.discovery.service=remoteApp", - "localApp.ribbon.NIWSServerListClassName=" - + "com.netflix.loadbalancer.ConfigurationBasedServerList", - "localApp.ribbon.listOfServers=127.0.0.1:19090", - "localApp.ribbon.ServerListRefreshInterval=15000" }) -public class NacosRibbonClientPropertyOverrideTests { - - @Autowired - private SpringClientFactory factory; - - @Test - public void serverListOverridesToTest() { - ConfigurationBasedServerList.class - .cast(getLoadBalancer("localApp").getServerListImpl()); - } - - @Test - public void serverListRemoteTest() { - NacosServerList.class.cast(getLoadBalancer("remoteApp").getServerListImpl()); - } - - @SuppressWarnings("unchecked") - private ZoneAwareLoadBalancer getLoadBalancer(String name) { - return (ZoneAwareLoadBalancer) this.factory.getLoadBalancer(name); - } - - @Configuration - @RibbonClients - @EnableAutoConfiguration - @ImportAutoConfiguration({ UtilAutoConfiguration.class, - PropertyPlaceholderAutoConfiguration.class, ArchaiusAutoConfiguration.class, - RibbonNacosAutoConfiguration.class, NacosDiscoveryClientConfiguration.class }) - protected static class TestConfiguration { - - } - -} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/ribbon/NacosServerListTests.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/ribbon/NacosServerListTests.java deleted file mode 100644 index 1c6e65d9..00000000 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/ribbon/NacosServerListTests.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * 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 - * - * https://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 com.alibaba.cloud.nacos.ribbon; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.stream.Collectors; - -import com.alibaba.cloud.nacos.NacosDiscoveryProperties; -import com.alibaba.cloud.nacos.test.NacosMockTest; -import com.alibaba.nacos.api.naming.NamingService; -import com.alibaba.nacos.api.naming.pojo.Instance; -import com.netflix.client.config.IClientConfig; -import org.junit.Test; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -/** - * @author xiaojing - */ - -public class NacosServerListTests { - - @Test - @SuppressWarnings("unchecked") - public void testEmptyInstancesReturnsEmptyList() throws Exception { - NacosDiscoveryProperties nacosDiscoveryProperties = mock( - NacosDiscoveryProperties.class); - - NamingService namingService = mock(NamingService.class); - - when(nacosDiscoveryProperties.namingServiceInstance()).thenReturn(namingService); - when(namingService.selectInstances(anyString(), eq("DEFAULT"), eq(true))) - .thenReturn(null); - - NacosServerList serverList = new NacosServerList(nacosDiscoveryProperties); - List servers = serverList.getInitialListOfServers(); - assertThat(servers).isEmpty(); - } - - @Test - @SuppressWarnings("unchecked") - public void testGetServers() throws Exception { - - ArrayList instances = new ArrayList<>(); - instances.add(NacosMockTest.serviceInstance("test-service", false, - Collections.emptyMap())); - - NacosDiscoveryProperties nacosDiscoveryProperties = mock( - NacosDiscoveryProperties.class); - - NamingService namingService = mock(NamingService.class); - - when(nacosDiscoveryProperties.namingServiceInstance()).thenReturn(namingService); - when(nacosDiscoveryProperties.getGroup()).thenReturn("DEFAULT"); - when(nacosDiscoveryProperties.getGroup()).thenReturn("DEFAULT"); - when(namingService.selectInstances(eq("test-service"), eq("DEFAULT"), eq(true))) - .thenReturn(instances); - - IClientConfig clientConfig = mock(IClientConfig.class); - when(clientConfig.getClientName()).thenReturn("test-service"); - NacosServerList serverList = new NacosServerList(nacosDiscoveryProperties); - serverList.initWithNiwsConfig(clientConfig); - List servers = serverList.getInitialListOfServers(); - assertThat(servers).hasSize(1); - - servers = serverList.getUpdatedListOfServers(); - assertThat(servers).hasSize(1); - } - - @Test - @SuppressWarnings("unchecked") - public void testGetServersWithInstanceStatus() throws Exception { - ArrayList instances = new ArrayList<>(); - - HashMap map1 = new HashMap<>(); - map1.put("instanceNum", "1"); - HashMap map2 = new HashMap<>(); - map2.put("instanceNum", "2"); - instances.add(NacosMockTest.serviceInstance("test-service", false, map1)); - instances.add(NacosMockTest.serviceInstance("test-service", true, map2)); - - NacosDiscoveryProperties nacosDiscoveryProperties = mock( - NacosDiscoveryProperties.class); - - NamingService namingService = mock(NamingService.class); - - when(nacosDiscoveryProperties.namingServiceInstance()).thenReturn(namingService); - when(nacosDiscoveryProperties.getGroup()).thenReturn("DEFAULT"); - when(namingService.selectInstances(eq("test-service"), eq("DEFAULT"), eq(true))) - .thenReturn(instances.stream().filter(Instance::isHealthy) - .collect(Collectors.toList())); - - IClientConfig clientConfig = mock(IClientConfig.class); - when(clientConfig.getClientName()).thenReturn("test-service"); - NacosServerList serverList = new NacosServerList(nacosDiscoveryProperties); - serverList.initWithNiwsConfig(clientConfig); - List servers = serverList.getInitialListOfServers(); - assertThat(servers).hasSize(1); - - NacosServer nacosServer = servers.get(0); - - assertThat(nacosServer.getMetaInfo().getInstanceId()) - .isEqualTo(instances.get(1).getInstanceId()); - assertThat(nacosServer.getMetadata()).isEqualTo(map2); - assertThat(nacosServer.getInstance().isHealthy()).isEqualTo(true); - assertThat(nacosServer.getInstance().getServiceName()).isEqualTo("test-service"); - assertThat(nacosServer.getInstance().getMetadata().get("instanceNum")) - .isEqualTo("2"); - - } - - @Test - public void testUpdateServers() throws Exception { - ArrayList instances = new ArrayList<>(); - - HashMap map = new HashMap<>(); - map.put("instanceNum", "1"); - instances.add(NacosMockTest.serviceInstance("test-service", true, map)); - - NacosDiscoveryProperties nacosDiscoveryProperties = mock( - NacosDiscoveryProperties.class); - - NamingService namingService = mock(NamingService.class); - - when(nacosDiscoveryProperties.namingServiceInstance()).thenReturn(namingService); - when(nacosDiscoveryProperties.getGroup()).thenReturn("DEFAULT"); - when(namingService.selectInstances(eq("test-service"), eq("DEFAULT"), eq(true))) - .thenReturn(instances.stream().filter(Instance::isHealthy) - .collect(Collectors.toList())); - - IClientConfig clientConfig = mock(IClientConfig.class); - when(clientConfig.getClientName()).thenReturn("test-service"); - NacosServerList serverList = new NacosServerList(nacosDiscoveryProperties); - serverList.initWithNiwsConfig(clientConfig); - - List servers = serverList.getUpdatedListOfServers(); - assertThat(servers).hasSize(1); - - assertThat(servers.get(0).getInstance().isHealthy()).isEqualTo(true); - assertThat(servers.get(0).getInstance().getMetadata().get("instanceNum")) - .isEqualTo("1"); - } - -} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataFeignBlockingLoadBalancerClient.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataFeignBlockingLoadBalancerClient.java index b504ccc8..74152e62 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataFeignBlockingLoadBalancerClient.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataFeignBlockingLoadBalancerClient.java @@ -22,7 +22,9 @@ import feign.Client; import feign.Request; import feign.Response; +import org.springframework.cloud.client.loadbalancer.LoadBalancerProperties; import org.springframework.cloud.loadbalancer.blocking.client.BlockingLoadBalancerClient; +import org.springframework.cloud.loadbalancer.support.LoadBalancerClientFactory; import org.springframework.cloud.openfeign.loadbalancer.FeignBlockingLoadBalancerClient; /** @@ -32,9 +34,11 @@ public class SeataFeignBlockingLoadBalancerClient extends FeignBlockingLoadBalancerClient { public SeataFeignBlockingLoadBalancerClient(Client delegate, - BlockingLoadBalancerClient loadBalancerClient, - SeataFeignObjectWrapper seataFeignObjectWrapper) { - super((Client) seataFeignObjectWrapper.wrap(delegate), loadBalancerClient); + BlockingLoadBalancerClient loadBalancerClient, + LoadBalancerProperties properties, + LoadBalancerClientFactory loadBalancerClientFactory, + SeataFeignObjectWrapper seataFeignObjectWrapper) { + super((Client) seataFeignObjectWrapper.wrap(delegate), loadBalancerClient, properties, loadBalancerClientFactory); } @Override diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataFeignClientAutoConfiguration.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataFeignClientAutoConfiguration.java index 55bbb60c..50659e80 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataFeignClientAutoConfiguration.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataFeignClientAutoConfiguration.java @@ -38,13 +38,13 @@ import org.springframework.context.annotation.Scope; @AutoConfigureBefore(FeignAutoConfiguration.class) public class SeataFeignClientAutoConfiguration { - @Bean - @Scope("prototype") - @ConditionalOnClass(name = "com.netflix.hystrix.HystrixCommand") - @ConditionalOnProperty(name = "feign.hystrix.enabled", havingValue = "true") - Feign.Builder feignHystrixBuilder(BeanFactory beanFactory) { - return SeataHystrixFeignBuilder.builder(beanFactory); - } +// @Bean +// @Scope("prototype") +// @ConditionalOnClass(name = "com.netflix.hystrix.HystrixCommand") +// @ConditionalOnProperty(name = "feign.hystrix.enabled", havingValue = "true") +// Feign.Builder feignHystrixBuilder(BeanFactory beanFactory) { +// return SeataHystrixFeignBuilder.builder(beanFactory); +// } @Bean @Scope("prototype") diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataFeignObjectWrapper.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataFeignObjectWrapper.java index c13391db..b7b4deca 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataFeignObjectWrapper.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataFeignObjectWrapper.java @@ -21,11 +21,13 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.BeanFactory; +import org.springframework.cloud.client.loadbalancer.LoadBalancerProperties; import org.springframework.cloud.loadbalancer.blocking.client.BlockingLoadBalancerClient; -import org.springframework.cloud.netflix.ribbon.SpringClientFactory; +import org.springframework.cloud.loadbalancer.support.LoadBalancerClientFactory; +//import org.springframework.cloud.netflix.ribbon.SpringClientFactory; import org.springframework.cloud.openfeign.loadbalancer.FeignBlockingLoadBalancerClient; -import org.springframework.cloud.openfeign.ribbon.CachingSpringLoadBalancerFactory; -import org.springframework.cloud.openfeign.ribbon.LoadBalancerFeignClient; +//import org.springframework.cloud.openfeign.ribbon.CachingSpringLoadBalancerFactory; +//import org.springframework.cloud.openfeign.ribbon.LoadBalancerFeignClient; /** * @author xiaojing @@ -37,9 +39,9 @@ public class SeataFeignObjectWrapper { private final BeanFactory beanFactory; - private CachingSpringLoadBalancerFactory cachingSpringLoadBalancerFactory; +// private CachingSpringLoadBalancerFactory cachingSpringLoadBalancerFactory; - private SpringClientFactory springClientFactory; +// private SpringClientFactory springClientFactory; SeataFeignObjectWrapper(BeanFactory beanFactory) { this.beanFactory = beanFactory; @@ -47,35 +49,38 @@ public class SeataFeignObjectWrapper { Object wrap(Object bean) { if (bean instanceof Client && !(bean instanceof SeataFeignClient)) { - if (bean instanceof LoadBalancerFeignClient) { - LoadBalancerFeignClient client = ((LoadBalancerFeignClient) bean); - return new SeataLoadBalancerFeignClient(client.getDelegate(), factory(), - clientFactory(), this); - } +// if (bean instanceof LoadBalancerFeignClient) { +// LoadBalancerFeignClient client = ((LoadBalancerFeignClient) bean); +// return new SeataLoadBalancerFeignClient(client.getDelegate(), factory(), +// clientFactory(), this); +// } if (bean instanceof FeignBlockingLoadBalancerClient) { FeignBlockingLoadBalancerClient client = (FeignBlockingLoadBalancerClient) bean; return new SeataFeignBlockingLoadBalancerClient(client.getDelegate(), - beanFactory.getBean(BlockingLoadBalancerClient.class), this); + beanFactory.getBean(BlockingLoadBalancerClient.class), + beanFactory.getBean(LoadBalancerProperties.class), + beanFactory.getBean(LoadBalancerClientFactory.class), + this); } return new SeataFeignClient(this.beanFactory, (Client) bean); } return bean; } - CachingSpringLoadBalancerFactory factory() { - if (this.cachingSpringLoadBalancerFactory == null) { - this.cachingSpringLoadBalancerFactory = this.beanFactory - .getBean(CachingSpringLoadBalancerFactory.class); - } - return this.cachingSpringLoadBalancerFactory; - } +// CachingSpringLoadBalancerFactory factory() { +// if (this.cachingSpringLoadBalancerFactory == null) { +// this.cachingSpringLoadBalancerFactory = this.beanFactory +// .getBean(CachingSpringLoadBalancerFactory.class); +// } +// return this.cachingSpringLoadBalancerFactory; +// } - SpringClientFactory clientFactory() { - if (this.springClientFactory == null) { - this.springClientFactory = this.beanFactory - .getBean(SpringClientFactory.class); - } - return this.springClientFactory; - } +// SpringClientFactory clientFactory() { +// if (this.springClientFactory == null) { +// this.springClientFactory = this.beanFactory +// .getBean(SpringClientFactory.class); +// } +// return this.springClientFactory; +// } } diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataHystrixFeignBuilder.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataHystrixFeignBuilder.java index 98fb605f..c5b48e5a 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataHystrixFeignBuilder.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataHystrixFeignBuilder.java @@ -1,38 +1,38 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * 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 - * - * https://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 com.alibaba.cloud.seata.feign; - -import feign.Feign; -import feign.Retryer; -import feign.hystrix.HystrixFeign; - -import org.springframework.beans.factory.BeanFactory; - -/** - * @author xiaojing - */ -final class SeataHystrixFeignBuilder { - - private SeataHystrixFeignBuilder() { - } - - static Feign.Builder builder(BeanFactory beanFactory) { - return HystrixFeign.builder().retryer(Retryer.NEVER_RETRY) - .client(new SeataFeignClient(beanFactory)); - } - -} +///* +// * Copyright 2013-2018 the original author or authors. +// * +// * 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 +// * +// * https://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 com.alibaba.cloud.seata.feign; +// +//import feign.Feign; +//import feign.Retryer; +//import feign.hystrix.HystrixFeign; +// +//import org.springframework.beans.factory.BeanFactory; +// +///** +// * @author xiaojing +// */ +//final class SeataHystrixFeignBuilder { +// +// private SeataHystrixFeignBuilder() { +// } +// +// static Feign.Builder builder(BeanFactory beanFactory) { +// return HystrixFeign.builder().retryer(Retryer.NEVER_RETRY) +// .client(new SeataFeignClient(beanFactory)); +// } +// +//} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataLoadBalancerFeignClient.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataLoadBalancerFeignClient.java index 8204fed8..e6525d01 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataLoadBalancerFeignClient.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataLoadBalancerFeignClient.java @@ -1,48 +1,45 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * 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 - * - * https://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 com.alibaba.cloud.seata.feign; - -import java.io.IOException; - -import feign.Client; -import feign.Request; -import feign.Response; - -import org.springframework.cloud.netflix.ribbon.SpringClientFactory; -import org.springframework.cloud.openfeign.ribbon.CachingSpringLoadBalancerFactory; -import org.springframework.cloud.openfeign.ribbon.LoadBalancerFeignClient; - -/** - * @author xiaojing - * @author yuhuangbin - */ -public class SeataLoadBalancerFeignClient extends LoadBalancerFeignClient { - - SeataLoadBalancerFeignClient(Client delegate, - CachingSpringLoadBalancerFactory lbClientFactory, - SpringClientFactory clientFactory, - SeataFeignObjectWrapper seataFeignObjectWrapper) { - super((Client) seataFeignObjectWrapper.wrap(delegate), lbClientFactory, - clientFactory); - } - - @Override - public Response execute(Request request, Request.Options options) throws IOException { - return super.execute(request, options); - } - -} +///* +// * Copyright 2013-2018 the original author or authors. +// * +// * 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 +// * +// * https://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 com.alibaba.cloud.seata.feign; +// +//import java.io.IOException; +// +//import feign.Client; +//import feign.Request; +//import feign.Response; +// +// +///** +// * @author xiaojing +// * @author yuhuangbin +// */ +//public class SeataLoadBalancerFeignClient extends LoadBalancerFeignClient { +// +// SeataLoadBalancerFeignClient(Client delegate, +// CachingSpringLoadBalancerFactory lbClientFactory, +// SpringClientFactory clientFactory, +// SeataFeignObjectWrapper seataFeignObjectWrapper) { +// super((Client) seataFeignObjectWrapper.wrap(delegate), lbClientFactory, +// clientFactory); +// } +// +// @Override +// public Response execute(Request request, Request.Options options) throws IOException { +// return super.execute(request, options); +// } +// +//} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/hystrix/SeataHystrixAutoConfiguration.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/hystrix/SeataHystrixAutoConfiguration.java deleted file mode 100644 index a790c9d2..00000000 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/hystrix/SeataHystrixAutoConfiguration.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * 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 - * - * https://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 com.alibaba.cloud.seata.feign.hystrix; - -import com.netflix.hystrix.HystrixCommand; - -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * @author xiaojing - */ -@Configuration(proxyBeanMethods = false) -@ConditionalOnClass(HystrixCommand.class) -public class SeataHystrixAutoConfiguration { - - @Bean - SeataHystrixConcurrencyStrategy seataHystrixConcurrencyStrategy() { - return new SeataHystrixConcurrencyStrategy(); - } - -} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/hystrix/SeataHystrixConcurrencyStrategy.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/hystrix/SeataHystrixConcurrencyStrategy.java deleted file mode 100644 index d0a1528b..00000000 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/hystrix/SeataHystrixConcurrencyStrategy.java +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * 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 - * - * https://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 com.alibaba.cloud.seata.feign.hystrix; - -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.Callable; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; - -import com.netflix.hystrix.HystrixThreadPoolKey; -import com.netflix.hystrix.HystrixThreadPoolProperties; -import com.netflix.hystrix.strategy.HystrixPlugins; -import com.netflix.hystrix.strategy.concurrency.HystrixConcurrencyStrategy; -import com.netflix.hystrix.strategy.concurrency.HystrixRequestVariable; -import com.netflix.hystrix.strategy.concurrency.HystrixRequestVariableLifecycle; -import com.netflix.hystrix.strategy.eventnotifier.HystrixEventNotifier; -import com.netflix.hystrix.strategy.executionhook.HystrixCommandExecutionHook; -import com.netflix.hystrix.strategy.metrics.HystrixMetricsPublisher; -import com.netflix.hystrix.strategy.properties.HystrixPropertiesStrategy; -import com.netflix.hystrix.strategy.properties.HystrixProperty; -import io.seata.core.context.RootContext; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.springframework.util.StringUtils; -import org.springframework.web.context.request.RequestAttributes; -import org.springframework.web.context.request.RequestContextHolder; - -/** - * @author xiaojing - */ -public class SeataHystrixConcurrencyStrategy extends HystrixConcurrencyStrategy { - - private final Logger logger = LoggerFactory - .getLogger(SeataHystrixConcurrencyStrategy.class); - - private HystrixConcurrencyStrategy delegate; - - public SeataHystrixConcurrencyStrategy() { - try { - this.delegate = HystrixPlugins.getInstance().getConcurrencyStrategy(); - if (this.delegate instanceof SeataHystrixConcurrencyStrategy) { - return; - } - HystrixCommandExecutionHook commandExecutionHook = HystrixPlugins - .getInstance().getCommandExecutionHook(); - HystrixEventNotifier eventNotifier = HystrixPlugins.getInstance() - .getEventNotifier(); - HystrixMetricsPublisher metricsPublisher = HystrixPlugins.getInstance() - .getMetricsPublisher(); - HystrixPropertiesStrategy propertiesStrategy = HystrixPlugins.getInstance() - .getPropertiesStrategy(); - logCurrentStateOfHystrixPlugins(eventNotifier, metricsPublisher, - propertiesStrategy); - HystrixPlugins.reset(); - HystrixPlugins.getInstance().registerConcurrencyStrategy(this); - HystrixPlugins.getInstance() - .registerCommandExecutionHook(commandExecutionHook); - HystrixPlugins.getInstance().registerEventNotifier(eventNotifier); - HystrixPlugins.getInstance().registerMetricsPublisher(metricsPublisher); - HystrixPlugins.getInstance().registerPropertiesStrategy(propertiesStrategy); - } - catch (Exception ex) { - logger.error("Failed to register Seata Hystrix Concurrency Strategy", ex); - } - } - - private void logCurrentStateOfHystrixPlugins(HystrixEventNotifier eventNotifier, - HystrixMetricsPublisher metricsPublisher, - HystrixPropertiesStrategy propertiesStrategy) { - if (logger.isDebugEnabled()) { - logger.debug("Current Hystrix plugins configuration is [" - + "concurrencyStrategy [" + this.delegate + "]," + "eventNotifier [" - + eventNotifier + "]," + "metricPublisher [" + metricsPublisher + "]," - + "propertiesStrategy [" + propertiesStrategy + "]," + "]"); - logger.debug("Registering Seata Hystrix Concurrency Strategy."); - } - } - - @Override - public ThreadPoolExecutor getThreadPool(HystrixThreadPoolKey threadPoolKey, - HystrixProperty corePoolSize, - HystrixProperty maximumPoolSize, - HystrixProperty keepAliveTime, TimeUnit unit, - BlockingQueue workQueue) { - return this.delegate.getThreadPool(threadPoolKey, corePoolSize, maximumPoolSize, - keepAliveTime, unit, workQueue); - } - - @Override - public ThreadPoolExecutor getThreadPool(HystrixThreadPoolKey threadPoolKey, - HystrixThreadPoolProperties threadPoolProperties) { - return this.delegate.getThreadPool(threadPoolKey, threadPoolProperties); - } - - @Override - public BlockingQueue getBlockingQueue(int maxQueueSize) { - return this.delegate.getBlockingQueue(maxQueueSize); - } - - @Override - public HystrixRequestVariable getRequestVariable( - HystrixRequestVariableLifecycle rv) { - return this.delegate.getRequestVariable(rv); - } - - @Override - public Callable wrapCallable(Callable c) { - if (c instanceof SeataContextCallable) { - return c; - } - - Callable wrappedCallable; - if (this.delegate != null) { - wrappedCallable = this.delegate.wrapCallable(c); - } - else { - wrappedCallable = c; - } - if (wrappedCallable instanceof SeataContextCallable) { - return wrappedCallable; - } - - return new SeataContextCallable<>(wrappedCallable, - RequestContextHolder.getRequestAttributes()); - } - - private static class SeataContextCallable implements Callable { - - private final Callable actual; - - private final String xid; - - private final RequestAttributes requestAttributes; - - SeataContextCallable(Callable actual, RequestAttributes requestAttribute) { - this.actual = actual; - this.requestAttributes = requestAttribute; - this.xid = RootContext.getXID(); - } - - @Override - public K call() throws Exception { - try { - RequestContextHolder.setRequestAttributes(requestAttributes); - if (!StringUtils.isEmpty(xid)) { - RootContext.bind(xid); - } - return actual.call(); - } - finally { - if (!StringUtils.isEmpty(xid)) { - RootContext.unbind(); - } - RequestContextHolder.resetRequestAttributes(); - } - } - - } - -} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/resources/META-INF/spring.factories b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/resources/META-INF/spring.factories index 54b578ae..c4c1b218 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/resources/META-INF/spring.factories +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/resources/META-INF/spring.factories @@ -1,6 +1,5 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.alibaba.cloud.seata.rest.SeataRestTemplateAutoConfiguration,\ com.alibaba.cloud.seata.web.SeataHandlerInterceptorConfiguration,\ -com.alibaba.cloud.seata.feign.SeataFeignClientAutoConfiguration,\ -com.alibaba.cloud.seata.feign.hystrix.SeataHystrixAutoConfiguration +com.alibaba.cloud.seata.feign.SeataFeignClientAutoConfiguration diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/pom.xml b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/pom.xml index f97d4a91..3b52c94c 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/pom.xml +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/pom.xml @@ -75,6 +75,12 @@ true + + org.springframework.cloud + spring-cloud-starter-loadbalancer + true + + org.springframework.cloud spring-cloud-commons @@ -156,6 +162,12 @@ test + + junit + junit + test + + diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelFeign.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelFeign.java index 5b2f89d8..bb804474 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelFeign.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelFeign.java @@ -25,8 +25,8 @@ import feign.Contract; import feign.Feign; import feign.InvocationHandlerFactory; import feign.Target; -import feign.hystrix.FallbackFactory; -import feign.hystrix.HystrixFeign; +//import feign.hystrix.FallbackFactory; +//import feign.hystrix.HystrixFeign; import org.springframework.beans.BeansException; import org.springframework.cloud.openfeign.FeignContext; @@ -80,35 +80,35 @@ public final class SentinelFeign { // using reflect get fallback and fallbackFactory properties from // FeignClientFactoryBean because FeignClientFactoryBean is a package // level class, we can not use it in our package - Object feignClientFactoryBean = Builder.this.applicationContext - .getBean("&" + target.type().getName()); - - Class fallback = (Class) getFieldValue(feignClientFactoryBean, - "fallback"); - Class fallbackFactory = (Class) getFieldValue(feignClientFactoryBean, - "fallbackFactory"); - String beanName = (String) getFieldValue(feignClientFactoryBean, - "contextId"); - if (!StringUtils.hasText(beanName)) { - beanName = (String) getFieldValue(feignClientFactoryBean, "name"); - } - - Object fallbackInstance; - FallbackFactory fallbackFactoryInstance; - // check fallback and fallbackFactory properties - if (void.class != fallback) { - fallbackInstance = getFromContext(beanName, "fallback", fallback, - target.type()); - return new SentinelInvocationHandler(target, dispatch, - new FallbackFactory.Default(fallbackInstance)); - } - if (void.class != fallbackFactory) { - fallbackFactoryInstance = (FallbackFactory) getFromContext( - beanName, "fallbackFactory", fallbackFactory, - FallbackFactory.class); - return new SentinelInvocationHandler(target, dispatch, - fallbackFactoryInstance); - } +// Object feignClientFactoryBean = Builder.this.applicationContext +// .getBean("&" + target.type().getName()); +// +// Class fallback = (Class) getFieldValue(feignClientFactoryBean, +// "fallback"); +// Class fallbackFactory = (Class) getFieldValue(feignClientFactoryBean, +// "fallbackFactory"); +// String beanName = (String) getFieldValue(feignClientFactoryBean, +// "contextId"); +// if (!StringUtils.hasText(beanName)) { +// beanName = (String) getFieldValue(feignClientFactoryBean, "name"); +// } +// +// Object fallbackInstance; +// FallbackFactory fallbackFactoryInstance; +// // check fallback and fallbackFactory properties +// if (void.class != fallback) { +// fallbackInstance = getFromContext(beanName, "fallback", fallback, +// target.type()); +// return new SentinelInvocationHandler(target, dispatch, +// new FallbackFactory.Default(fallbackInstance)); +// } +// if (void.class != fallbackFactory) { +// fallbackFactoryInstance = (FallbackFactory) getFromContext( +// beanName, "fallbackFactory", fallbackFactory, +// FallbackFactory.class); +// return new SentinelInvocationHandler(target, dispatch, +// fallbackFactoryInstance); +// } return new SentinelInvocationHandler(target, dispatch); } diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelInvocationHandler.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelInvocationHandler.java index e5f80a62..85144c05 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelInvocationHandler.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelInvocationHandler.java @@ -33,7 +33,6 @@ import feign.Feign; import feign.InvocationHandlerFactory.MethodHandler; import feign.MethodMetadata; import feign.Target; -import feign.hystrix.FallbackFactory; import static feign.Util.checkNotNull; @@ -48,18 +47,8 @@ public class SentinelInvocationHandler implements InvocationHandler { private final Map dispatch; - private FallbackFactory fallbackFactory; - private Map fallbackMethodMap; - SentinelInvocationHandler(Target target, Map dispatch, - FallbackFactory fallbackFactory) { - this.target = checkNotNull(target, "target"); - this.dispatch = checkNotNull(dispatch, "dispatch"); - this.fallbackFactory = fallbackFactory; - this.fallbackMethodMap = toFallbackMethod(dispatch); - } - SentinelInvocationHandler(Target target, Map dispatch) { this.target = checkNotNull(target, "target"); this.dispatch = checkNotNull(dispatch, "dispatch"); @@ -111,25 +100,8 @@ public class SentinelInvocationHandler implements InvocationHandler { if (!BlockException.isBlockException(ex)) { Tracer.trace(ex); } - if (fallbackFactory != null) { - try { - Object fallbackResult = fallbackMethodMap.get(method) - .invoke(fallbackFactory.create(ex), args); - return fallbackResult; - } - catch (IllegalAccessException e) { - // shouldn't happen as method is public due to being an - // interface - throw new AssertionError(e); - } - catch (InvocationTargetException e) { - throw new AssertionError(e.getCause()); - } - } - else { - // throw exception if fallbackFactory is null - throw ex; - } + // throw exception if fallbackFactory is null + throw ex; } finally { if (entry != null) { diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/test/java/com/alibaba/cloud/sentinel/ContextIdSentinelFeignTests.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/test/java/com/alibaba/cloud/sentinel/ContextIdSentinelFeignTests.java index 7bd67724..79d0873a 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/test/java/com/alibaba/cloud/sentinel/ContextIdSentinelFeignTests.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/test/java/com/alibaba/cloud/sentinel/ContextIdSentinelFeignTests.java @@ -25,6 +25,7 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -122,7 +123,7 @@ public class ContextIdSentinelFeignTests { } public static class CustomFallbackFactory - implements feign.hystrix.FallbackFactory { + implements FallbackFactory { private FooService fooService = new FooServiceFallback(); diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/test/java/com/alibaba/cloud/sentinel/SentinelFeignTests.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/test/java/com/alibaba/cloud/sentinel/SentinelFeignTests.java index 0939bf0b..b8efeece 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/test/java/com/alibaba/cloud/sentinel/SentinelFeignTests.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/test/java/com/alibaba/cloud/sentinel/SentinelFeignTests.java @@ -31,6 +31,7 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -191,7 +192,7 @@ public class SentinelFeignTests { } public static class CustomFallbackFactory - implements feign.hystrix.FallbackFactory { + implements FallbackFactory { private FooService fooService = new FooServiceFallback(); diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/consul/SidecarConsulAutoRegistration.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/consul/SidecarConsulAutoRegistration.java index f53a0a1d..ecb51e17 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/consul/SidecarConsulAutoRegistration.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/consul/SidecarConsulAutoRegistration.java @@ -59,7 +59,7 @@ public class SidecarConsulAutoRegistration extends ConsulAutoRegistration { service.setAddress(sidecarProperties.getIp()); } service.setName(normalizeForDns(appName)); - service.setTags(createTags(properties)); + service.setTags(properties.getTags()); // set health check, use alibaba sidecar self's port rather than polyglot app's // port. diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/nacos/SidecarNacosDiscoveryProperties.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/nacos/SidecarNacosDiscoveryProperties.java index 1a7a6d87..c7513502 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/nacos/SidecarNacosDiscoveryProperties.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/nacos/SidecarNacosDiscoveryProperties.java @@ -37,7 +37,7 @@ public class SidecarNacosDiscoveryProperties extends NacosDiscoveryProperties { super.init(); String ip = sidecarProperties.getIp(); - if (!StringUtils.isEmpty(ip)) { + if (!StringUtils.hasText(ip)) { this.setIp(ip); } diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-bus-rocketmq/src/main/java/com/alibaba/cloud/bus/rocketmq/env/RocketMQBusEnvironmentPostProcessor.java b/spring-cloud-alibaba-starters/spring-cloud-starter-bus-rocketmq/src/main/java/com/alibaba/cloud/bus/rocketmq/env/RocketMQBusEnvironmentPostProcessor.java index d062dc23..f378bfa4 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-bus-rocketmq/src/main/java/com/alibaba/cloud/bus/rocketmq/env/RocketMQBusEnvironmentPostProcessor.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-bus-rocketmq/src/main/java/com/alibaba/cloud/bus/rocketmq/env/RocketMQBusEnvironmentPostProcessor.java @@ -28,7 +28,7 @@ import org.springframework.core.env.MapPropertySource; import org.springframework.core.env.MutablePropertySources; import org.springframework.core.env.PropertySource; -import static org.springframework.cloud.bus.SpringCloudBusClient.INPUT; +import static org.springframework.cloud.bus.BusConstants.INPUT; /** * The lowest precedence {@link EnvironmentPostProcessor} configures default RocketMQ Bus diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-stream-rocketmq/pom.xml b/spring-cloud-alibaba-starters/spring-cloud-starter-stream-rocketmq/pom.xml index ec44c9d7..38be941f 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-stream-rocketmq/pom.xml +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-stream-rocketmq/pom.xml @@ -58,6 +58,13 @@ spring-boot-starter-test test + + + junit + junit + test + + diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-stream-rocketmq/src/main/java/com/alibaba/cloud/stream/binder/rocketmq/integration/RocketMQMessageHandler.java b/spring-cloud-alibaba-starters/spring-cloud-starter-stream-rocketmq/src/main/java/com/alibaba/cloud/stream/binder/rocketmq/integration/RocketMQMessageHandler.java index 2bf3fa62..6f89ff71 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-stream-rocketmq/src/main/java/com/alibaba/cloud/stream/binder/rocketmq/integration/RocketMQMessageHandler.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-stream-rocketmq/src/main/java/com/alibaba/cloud/stream/binder/rocketmq/integration/RocketMQMessageHandler.java @@ -131,7 +131,7 @@ public class RocketMQMessageHandler extends AbstractMessageHandler implements Li } } catch (MQClientException e) { - logger.error("fetch publish message queues fail", e); + logger.error(e, "fetch publish message queues fail"); } } running = true; From da197502688eb959f3256edf586fc37e0020dc7d Mon Sep 17 00:00:00 2001 From: theonefx Date: Tue, 23 Feb 2021 21:37:43 +0800 Subject: [PATCH 07/15] sentinel unit test pass --- .../pom.xml | 4 +- .../cloud/sentinel/feign/SentinelFeign.java | 77 +++++++++++-------- .../feign/SentinelInvocationHandler.java | 33 +++++++- 3 files changed, 76 insertions(+), 38 deletions(-) diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/pom.xml b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/pom.xml index 3b52c94c..28604c27 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/pom.xml +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/pom.xml @@ -77,13 +77,13 @@ org.springframework.cloud - spring-cloud-starter-loadbalancer + spring-cloud-commons true org.springframework.cloud - spring-cloud-commons + spring-cloud-starter-loadbalancer true diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelFeign.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelFeign.java index bb804474..953463ad 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelFeign.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelFeign.java @@ -25,16 +25,20 @@ import feign.Contract; import feign.Feign; import feign.InvocationHandlerFactory; import feign.Target; -//import feign.hystrix.FallbackFactory; -//import feign.hystrix.HystrixFeign; import org.springframework.beans.BeansException; +import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.cloud.openfeign.FeignClientFactoryBean; import org.springframework.cloud.openfeign.FeignContext; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; +import org.springframework.context.support.GenericApplicationContext; import org.springframework.util.ReflectionUtils; import org.springframework.util.StringUtils; +import static org.springframework.beans.factory.BeanFactory.FACTORY_BEAN_PREFIX; + /** * {@link Feign.Builder} like {@link HystrixFeign.Builder}. * @@ -77,38 +81,43 @@ public final class SentinelFeign { @Override public InvocationHandler create(Target target, Map dispatch) { - // using reflect get fallback and fallbackFactory properties from - // FeignClientFactoryBean because FeignClientFactoryBean is a package - // level class, we can not use it in our package -// Object feignClientFactoryBean = Builder.this.applicationContext -// .getBean("&" + target.type().getName()); -// -// Class fallback = (Class) getFieldValue(feignClientFactoryBean, -// "fallback"); -// Class fallbackFactory = (Class) getFieldValue(feignClientFactoryBean, -// "fallbackFactory"); -// String beanName = (String) getFieldValue(feignClientFactoryBean, -// "contextId"); -// if (!StringUtils.hasText(beanName)) { -// beanName = (String) getFieldValue(feignClientFactoryBean, "name"); -// } -// -// Object fallbackInstance; -// FallbackFactory fallbackFactoryInstance; -// // check fallback and fallbackFactory properties -// if (void.class != fallback) { -// fallbackInstance = getFromContext(beanName, "fallback", fallback, -// target.type()); -// return new SentinelInvocationHandler(target, dispatch, -// new FallbackFactory.Default(fallbackInstance)); -// } -// if (void.class != fallbackFactory) { -// fallbackFactoryInstance = (FallbackFactory) getFromContext( -// beanName, "fallbackFactory", fallbackFactory, -// FallbackFactory.class); -// return new SentinelInvocationHandler(target, dispatch, -// fallbackFactoryInstance); -// } + + GenericApplicationContext gctx = (GenericApplicationContext) Builder.this.applicationContext; + BeanDefinition def = gctx.getBeanDefinition(target.type().getName()); + + /** + * TODO + * 由于初始化顺序发生变更,这里为了避免循环依赖,只能通过 BeanDefinition 的方式获得 FeignClientFactoryBean + * 需要重点review + */ +// FeignClientFactoryBean feignClientFactoryBean = (FeignClientFactoryBean) Builder.this.applicationContext +// .getBean(FACTORY_BEAN_PREFIX + target.type().getName()); + FeignClientFactoryBean feignClientFactoryBean = (FeignClientFactoryBean) def.getAttribute("feignClientsRegistrarFactoryBean"); + + Class fallback = feignClientFactoryBean.getFallback(); + Class fallbackFactory = feignClientFactoryBean.getFallbackFactory(); + String beanName = feignClientFactoryBean.getContextId(); + + if (!StringUtils.hasText(beanName)) { + beanName = feignClientFactoryBean.getName(); + } + + Object fallbackInstance; + FallbackFactory fallbackFactoryInstance; + // check fallback and fallbackFactory properties + if (void.class != fallback) { + fallbackInstance = getFromContext(beanName, "fallback", fallback, + target.type()); + return new SentinelInvocationHandler(target, dispatch, + new FallbackFactory.Default(fallbackInstance)); + } + if (void.class != fallbackFactory) { + fallbackFactoryInstance = (FallbackFactory) getFromContext( + beanName, "fallbackFactory", fallbackFactory, + FallbackFactory.class); + return new SentinelInvocationHandler(target, dispatch, + fallbackFactoryInstance); + } return new SentinelInvocationHandler(target, dispatch); } diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelInvocationHandler.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelInvocationHandler.java index 85144c05..18ff4e7e 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelInvocationHandler.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelInvocationHandler.java @@ -23,6 +23,8 @@ import java.lang.reflect.Proxy; import java.util.LinkedHashMap; import java.util.Map; +import org.springframework.cloud.openfeign.FallbackFactory; + import com.alibaba.csp.sentinel.Entry; import com.alibaba.csp.sentinel.EntryType; import com.alibaba.csp.sentinel.SphU; @@ -47,8 +49,18 @@ public class SentinelInvocationHandler implements InvocationHandler { private final Map dispatch; + private FallbackFactory fallbackFactory; + private Map fallbackMethodMap; + SentinelInvocationHandler(Target target, Map dispatch, + FallbackFactory fallbackFactory) { + this.target = checkNotNull(target, "target"); + this.dispatch = checkNotNull(dispatch, "dispatch"); + this.fallbackFactory = fallbackFactory; + this.fallbackMethodMap = toFallbackMethod(dispatch); + } + SentinelInvocationHandler(Target target, Map dispatch) { this.target = checkNotNull(target, "target"); this.dispatch = checkNotNull(dispatch, "dispatch"); @@ -100,8 +112,25 @@ public class SentinelInvocationHandler implements InvocationHandler { if (!BlockException.isBlockException(ex)) { Tracer.trace(ex); } - // throw exception if fallbackFactory is null - throw ex; + if (fallbackFactory != null) { + try { + Object fallbackResult = fallbackMethodMap.get(method) + .invoke(fallbackFactory.create(ex), args); + return fallbackResult; + } + catch (IllegalAccessException e) { + // shouldn't happen as method is public due to being an + // interface + throw new AssertionError(e); + } + catch (InvocationTargetException e) { + throw new AssertionError(e.getCause()); + } + } + else { + // throw exception if fallbackFactory is null + throw ex; + } } finally { if (entry != null) { From de5ca9540eb7d254d324ab08dffc7c6118d68c78 Mon Sep 17 00:00:00 2001 From: theonefx Date: Wed, 24 Feb 2021 10:33:05 +0800 Subject: [PATCH 08/15] add spring-cloud-starter-bootstrap to compatible with spring boot bootstrap --- .../spring-cloud-starter-alibaba-nacos-config/pom.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-config/pom.xml b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-config/pom.xml index 371ac977..f6a2e185 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-config/pom.xml +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-config/pom.xml @@ -33,6 +33,12 @@ true + + org.springframework.cloud + spring-cloud-starter-bootstrap + true + + org.springframework.boot spring-boot From f8a6a4f75394c1435313fbce516b080d4b6e4f9d Mon Sep 17 00:00:00 2001 From: theonefx Date: Thu, 25 Feb 2021 16:38:56 +0800 Subject: [PATCH 09/15] add lost dependency of sc 2020 --- .../nacos-discovery-consumer-example/pom.xml | 4 ++++ .../sentinel-feign-consumer-example/pom.xml | 5 +++++ .../spring-cloud-dubbo-provider-sample/pom.xml | 5 +++++ 3 files changed, 14 insertions(+) diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/pom.xml b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/pom.xml index 8de96f97..ec7eaf4b 100644 --- a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/pom.xml +++ b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/pom.xml @@ -41,6 +41,10 @@ spring-cloud-starter-alibaba-sentinel + + org.springframework.cloud + spring-cloud-starter-loadbalancer + diff --git a/spring-cloud-alibaba-examples/sentinel-example/sentinel-feign-example/sentinel-feign-consumer-example/pom.xml b/spring-cloud-alibaba-examples/sentinel-example/sentinel-feign-example/sentinel-feign-consumer-example/pom.xml index 2ef10965..be3b835a 100644 --- a/spring-cloud-alibaba-examples/sentinel-example/sentinel-feign-example/sentinel-feign-consumer-example/pom.xml +++ b/spring-cloud-alibaba-examples/sentinel-example/sentinel-feign-example/sentinel-feign-consumer-example/pom.xml @@ -42,6 +42,11 @@ spring-cloud-starter-alibaba-sentinel + + org.springframework.cloud + spring-cloud-starter-loadbalancer + + diff --git a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-sample/pom.xml b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-sample/pom.xml index 5023d4fd..71ed7e28 100644 --- a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-sample/pom.xml +++ b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-sample/pom.xml @@ -133,6 +133,11 @@ hibernate-validator + + org.springframework.cloud + spring-cloud-starter-bootstrap + + From 45fae73e9ff2491f6b4d9877637d4489a3e8bfd5 Mon Sep 17 00:00:00 2001 From: theonefx Date: Thu, 25 Feb 2021 21:15:30 +0800 Subject: [PATCH 10/15] support springboot1 and springboot2 --- .../nacos-gateway-discovery-example/pom.xml | 4 ++++ .../spring-cloud-dubbo-consumer-sample/pom.xml | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-gateway-example/nacos-gateway-discovery-example/pom.xml b/spring-cloud-alibaba-examples/nacos-example/nacos-gateway-example/nacos-gateway-discovery-example/pom.xml index 97e014c7..b8fe04e4 100644 --- a/spring-cloud-alibaba-examples/nacos-example/nacos-gateway-example/nacos-gateway-discovery-example/pom.xml +++ b/spring-cloud-alibaba-examples/nacos-example/nacos-gateway-example/nacos-gateway-discovery-example/pom.xml @@ -32,6 +32,10 @@ spring-boot-starter-actuator + + org.springframework.cloud + spring-cloud-starter-loadbalancer + diff --git a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-consumer-sample/pom.xml b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-consumer-sample/pom.xml index 123a92a0..0746af1e 100644 --- a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-consumer-sample/pom.xml +++ b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-consumer-sample/pom.xml @@ -100,6 +100,11 @@ org.springframework.cloud spring-cloud-starter-consul-discovery + + + org.springframework.cloud + spring-cloud-starter-bootstrap + From ed9d659d649a2328b4d2fa31a50ca60850216f4b Mon Sep 17 00:00:00 2001 From: theonefx Date: Wed, 17 Mar 2021 16:29:06 +0800 Subject: [PATCH 11/15] remote all hystrix,zuul,ribbon --- README-zh.md | 2 +- pom.xml | 1 - spring-cloud-alibaba-dependencies/pom.xml | 5 - .../src/main/asciidoc-zh/sentinel.adoc | 26 ----- .../src/main/asciidoc/sentinel.adoc | 26 ----- .../examples/ConsumerSCLBApplication.java | 12 +-- .../pom.xml | 5 - .../sentinel/gateway/ConfigConstants.java | 11 -- .../gateway/zuul/FallBackProviderHandler.java | 62 ----------- .../zuul/SentinelZuulAutoConfiguration.java | 102 ------------------ .../gateway/zuul/SentinelZuulProperties.java | 89 --------------- .../SeataFeignClientAutoConfiguration.java | 8 -- .../seata/feign/SeataFeignObjectWrapper.java | 28 ----- .../seata/feign/SeataHystrixFeignBuilder.java | 38 ------- .../feign/SeataLoadBalancerFeignClient.java | 45 -------- .../cloud/sentinel/feign/SentinelFeign.java | 4 +- .../feign/SentinelInvocationHandler.java | 7 +- 17 files changed, 11 insertions(+), 460 deletions(-) delete mode 100644 spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/src/main/java/com/alibaba/cloud/sentinel/gateway/zuul/FallBackProviderHandler.java delete mode 100644 spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/src/main/java/com/alibaba/cloud/sentinel/gateway/zuul/SentinelZuulAutoConfiguration.java delete mode 100644 spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/src/main/java/com/alibaba/cloud/sentinel/gateway/zuul/SentinelZuulProperties.java delete mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataHystrixFeignBuilder.java delete mode 100644 spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataLoadBalancerFeignClient.java diff --git a/README-zh.md b/README-zh.md index a52b26ff..85b8afe5 100644 --- a/README-zh.md +++ b/README-zh.md @@ -15,7 +15,7 @@ Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。 ## 主要功能 -* **服务限流降级**:默认支持 WebServlet、WebFlux, OpenFeign、RestTemplate、Spring Cloud Gateway, Zuul, Dubbo 和 RocketMQ 限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级 Metrics 监控。 +* **服务限流降级**:默认支持 WebServlet、WebFlux, OpenFeign、RestTemplate、Spring Cloud Gateway, Dubbo 和 RocketMQ 限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级 Metrics 监控。 * **服务注册与发现**:适配 Spring Cloud 服务注册与发现标准,默认集成了 Ribbon 的支持。 * **分布式配置管理**:支持分布式系统中的外部化配置,配置更改时自动刷新。 * **消息驱动能力**:基于 Spring Cloud Stream 为微服务应用构建消息驱动能力。 diff --git a/pom.xml b/pom.xml index c8dc2134..7ddd23d8 100644 --- a/pom.xml +++ b/pom.xml @@ -252,7 +252,6 @@ true true warning - true diff --git a/spring-cloud-alibaba-dependencies/pom.xml b/spring-cloud-alibaba-dependencies/pom.xml index 1302d875..5064972f 100644 --- a/spring-cloud-alibaba-dependencies/pom.xml +++ b/spring-cloud-alibaba-dependencies/pom.xml @@ -102,11 +102,6 @@ ${sentinel.version} - - com.alibaba.csp - sentinel-zuul-adapter - ${sentinel.version} - com.alibaba.csp sentinel-spring-cloud-gateway-adapter diff --git a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/sentinel.adoc b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/sentinel.adoc index 64ffefe9..6dd60335 100644 --- a/spring-cloud-alibaba-docs/src/main/asciidoc-zh/sentinel.adoc +++ b/spring-cloud-alibaba-docs/src/main/asciidoc-zh/sentinel.adoc @@ -254,29 +254,6 @@ NOTE: 默认情况下,xml 格式是不支持的。需要添加 `jackson-datafo 关于 Sentinel 动态数据源的实现原理,参考: https://github.com/alibaba/Sentinel/wiki/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%99%E6%89%A9%E5%B1%95[动态规则扩展] -=== Zuul 支持 - -https://github.com/alibaba/Sentinel/wiki/%E7%BD%91%E5%85%B3%E9%99%90%E6%B5%81[参考 Sentinel 网关限流] - -若想跟 Sentinel Starter 配合使用,需要加上 `spring-cloud-alibaba-sentinel-gateway` 依赖,同时需要添加 `spring-cloud-starter-netflix-zuul` 依赖来让 `spring-cloud-alibaba-sentinel-gateway` 模块里的 Zuul 自动化配置类生效: - -```xml - - com.alibaba.cloud - spring-cloud-starter-alibaba-sentinel - - - - com.alibaba.cloud - spring-cloud-alibaba-sentinel-gateway - - - - org.springframework.cloud - spring-cloud-starter-netflix-zuul - -``` - === Spring Cloud Gateway 支持 https://github.com/alibaba/Sentinel/wiki/%E7%BD%91%E5%85%B3%E9%99%90%E6%B5%81[参考 Sentinel 网关限流] @@ -438,9 +415,6 @@ Spring Cloud Alibaba Sentinel 提供了这些配置选项 |`spring.cloud.sentinel.servlet.block-page`| 自定义的跳转 URL,当请求被限流时会自动跳转至设定好的 URL | |`spring.cloud.sentinel.flow.cold-factor`| https://github.com/alibaba/Sentinel/wiki/%E9%99%90%E6%B5%81--- %E5%86%B7%E5%90%AF%E5%8A%A8[冷启动因子] |3 -|`spring.cloud.sentinel.zuul.order.pre`| SentinelZuulPreFilter 的 order | 10000 -|`spring.cloud.sentinel.zuul.order.post`| SentinelZuulPostFilter 的 order | 1000 -|`spring.cloud.sentinel.zuul.order.error`| SentinelZuulErrorFilter 的 order | -1 |`spring.cloud.sentinel.scg.fallback.mode`| Spring Cloud Gateway 熔断后的响应模式(选择 `redirect` or `response`) | |`spring.cloud.sentinel.scg.fallback.redirect`| Spring Cloud Gateway 响应模式为 'redirect' 模式对应的重定向 URL | |`spring.cloud.sentinel.scg.fallback.response-body`| Spring Cloud Gateway 响应模式为 'response' 模式对应的响应内容 | diff --git a/spring-cloud-alibaba-docs/src/main/asciidoc/sentinel.adoc b/spring-cloud-alibaba-docs/src/main/asciidoc/sentinel.adoc index e0a5622a..da132203 100644 --- a/spring-cloud-alibaba-docs/src/main/asciidoc/sentinel.adoc +++ b/spring-cloud-alibaba-docs/src/main/asciidoc/sentinel.adoc @@ -255,29 +255,6 @@ NOTE: XML format is not supported by default. To make it effective, you need to To learn more about how dynamic data sources work in Sentinel, refer to https://github.com/alibaba/Sentinel/wiki/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%99%E6%89%A9%E5%B1%95[Dynamic Rule Extension]. -=== Support Zuul - -Refer https://github.com/alibaba/Sentinel/wiki/API-Gateway-Flow-Control[API Gateway Flow Control] - -If you want to use Sentinel Starter with Zuul, you need to add the `spring-cloud-alibaba-sentinel-gateway` dependency, and you need to add the `spring-cloud-starter-netflix-zuul` dependency to let Zuul AutoConfiguration class in the gateway module takes effect: - -```xml - - com.alibaba.cloud - spring-cloud-starter-alibaba-sentinel - - - - com.alibaba.cloud - spring-cloud-alibaba-sentinel-gateway - - - - org.springframework.cloud - spring-cloud-starter-netflix-zuul - -``` - === Support Spring Cloud Gateway Refer https://github.com/alibaba/Sentinel/wiki/API-Gateway-Flow-Control[API Gateway Flow Control] @@ -438,9 +415,6 @@ The following table shows all the configurations of Spring Cloud Alibaba Sentine |`spring.cloud.sentinel.log.switch-pid`|If PID is required for Sentinel log file names|false |`spring.cloud.sentinel.servlet.blockPage`| Customized redirection URL. When rate limited, the request will be redirected to the pre-defined URL | |`spring.cloud.sentinel.flow.coldFactor`| https://github.com/alibaba/Sentinel/wiki/%E9%99%90%E6%B5%81---%E5%86%B7%E5%90%AF%E5%8A%A8[ColdFactor] |3 -|`spring.cloud.sentinel.zuul.order.pre`| The order of SentinelZuulPreFilter | 10000 -|`spring.cloud.sentinel.zuul.order.post`| The order of SentinelZuulPostFilter | 1000 -|`spring.cloud.sentinel.zuul.order.error`| The order of SentinelZuulErrorFilter | -1 |`spring.cloud.sentinel.scg.fallback.mode`| Response mode after Spring Cloud Gateway circuit break (select `redirect` or `response`) | |`spring.cloud.sentinel.scg.fallback.redirect`| Spring Cloud Gateway response mode is the redirect URL corresponding to 'redirect' mode | |`spring.cloud.sentinel.scg.fallback.response-body`| Spring Cloud Gateway response mode is response content corresponding to 'response' mode | diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/src/main/java/com/alibaba/cloud/examples/ConsumerSCLBApplication.java b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/src/main/java/com/alibaba/cloud/examples/ConsumerSCLBApplication.java index 2407d7ea..4047df84 100644 --- a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/src/main/java/com/alibaba/cloud/examples/ConsumerSCLBApplication.java +++ b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-sclb-example/src/main/java/com/alibaba/cloud/examples/ConsumerSCLBApplication.java @@ -32,10 +32,10 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.client.loadbalancer.DefaultResponse; import org.springframework.cloud.client.loadbalancer.EmptyResponse; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.cloud.client.loadbalancer.Response; -import org.springframework.cloud.client.loadbalancer.DefaultResponse; import org.springframework.cloud.loadbalancer.annotation.LoadBalancerClient; import org.springframework.cloud.loadbalancer.core.NoopServiceInstanceListSupplier; import org.springframework.cloud.loadbalancer.core.ReactorServiceInstanceLoadBalancer; @@ -77,8 +77,7 @@ public class ConsumerSCLBApplication { } @Configuration - @LoadBalancerClient(value = "service-provider", - configuration = MyLoadBalancerConfiguration.class) + @LoadBalancerClient(value = "service-provider", configuration = MyLoadBalancerConfiguration.class) class MySCLBConfiguration { } @@ -102,9 +101,9 @@ public class ConsumerSCLBApplication { this.random = new Random(); } - @Override - public Mono> choose(org.springframework.cloud.client.loadbalancer.Request request) { + public Mono> choose( + org.springframework.cloud.client.loadbalancer.Request request) { ServiceInstanceListSupplier supplier = serviceInstanceListSupplierProvider .getIfAvailable(NoopServiceInstanceListSupplier::new); @@ -129,8 +128,7 @@ public class ConsumerSCLBApplication { } } - @FeignClient(name = "service-provider", fallback = EchoServiceFallback.class, - configuration = FeignConfiguration.class) + @FeignClient(name = "service-provider", fallback = EchoServiceFallback.class, configuration = FeignConfiguration.class) public interface EchoService { @GetMapping("/echo/{str}") diff --git a/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/pom.xml b/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/pom.xml index c9513a44..04fe730f 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/pom.xml +++ b/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/pom.xml @@ -33,11 +33,6 @@ sentinel-parameter-flow-control - - com.alibaba.csp - sentinel-zuul-adapter - - com.alibaba.csp sentinel-spring-cloud-gateway-adapter diff --git a/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/src/main/java/com/alibaba/cloud/sentinel/gateway/ConfigConstants.java b/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/src/main/java/com/alibaba/cloud/sentinel/gateway/ConfigConstants.java index 8158fdef..b86a887d 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/src/main/java/com/alibaba/cloud/sentinel/gateway/ConfigConstants.java +++ b/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/src/main/java/com/alibaba/cloud/sentinel/gateway/ConfigConstants.java @@ -17,28 +17,17 @@ package com.alibaba.cloud.sentinel.gateway; import com.alibaba.cloud.sentinel.gateway.scg.SentinelGatewayProperties; -import com.alibaba.cloud.sentinel.gateway.zuul.SentinelZuulProperties; /** * @author Jim */ public final class ConfigConstants { - /** - * Netflix Zuul type. - */ - public static final String APP_TYPE_ZUUL_GATEWAY = "12"; - /** * Spring Cloud Gateway type. */ public static final String APP_TYPE_SCG_GATEWAY = "11"; - /** - * ConfigurationProperties for {@link SentinelZuulProperties}. - */ - public static final String ZUUL_PREFIX = "spring.cloud.sentinel.zuul"; - /** * ConfigurationProperties for {@link SentinelGatewayProperties}. */ diff --git a/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/src/main/java/com/alibaba/cloud/sentinel/gateway/zuul/FallBackProviderHandler.java b/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/src/main/java/com/alibaba/cloud/sentinel/gateway/zuul/FallBackProviderHandler.java deleted file mode 100644 index dd08bd24..00000000 --- a/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/src/main/java/com/alibaba/cloud/sentinel/gateway/zuul/FallBackProviderHandler.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * 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 - * - * https://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 com.alibaba.cloud.sentinel.gateway.zuul; - -import java.util.Map; - -import com.alibaba.csp.sentinel.adapter.gateway.zuul.fallback.DefaultBlockFallbackProvider; -import com.alibaba.csp.sentinel.adapter.gateway.zuul.fallback.ZuulBlockFallbackManager; -import com.alibaba.csp.sentinel.adapter.gateway.zuul.fallback.ZuulBlockFallbackProvider; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.springframework.beans.factory.SmartInitializingSingleton; -import org.springframework.beans.factory.support.DefaultListableBeanFactory; -import org.springframework.util.CollectionUtils; - -/** - * @author tiger - */ -public class FallBackProviderHandler implements SmartInitializingSingleton { - - private static final Logger logger = LoggerFactory - .getLogger(FallBackProviderHandler.class); - - private final DefaultListableBeanFactory beanFactory; - - public FallBackProviderHandler(DefaultListableBeanFactory beanFactory) { - this.beanFactory = beanFactory; - } - - @Override - public void afterSingletonsInstantiated() { - Map providerMap = beanFactory - .getBeansOfType(ZuulBlockFallbackProvider.class); - if (!CollectionUtils.isEmpty(providerMap)) { - providerMap.forEach((k, v) -> { - logger.info("[Sentinel Zuul] Register provider name:{}, instance: {}", k, - v); - ZuulBlockFallbackManager.registerProvider(v); - }); - } - else { - logger.info("[Sentinel Zuul] Register default fallback provider. "); - ZuulBlockFallbackManager.registerProvider(new DefaultBlockFallbackProvider()); - } - } - -} diff --git a/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/src/main/java/com/alibaba/cloud/sentinel/gateway/zuul/SentinelZuulAutoConfiguration.java b/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/src/main/java/com/alibaba/cloud/sentinel/gateway/zuul/SentinelZuulAutoConfiguration.java deleted file mode 100644 index 6e57ae5f..00000000 --- a/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/src/main/java/com/alibaba/cloud/sentinel/gateway/zuul/SentinelZuulAutoConfiguration.java +++ /dev/null @@ -1,102 +0,0 @@ -///* -// * Copyright 2013-2018 the original author or authors. -// * -// * 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 -// * -// * https://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 com.alibaba.cloud.sentinel.gateway.zuul; -// -//import java.util.Optional; -// -//import javax.annotation.PostConstruct; -// -//import com.alibaba.cloud.sentinel.gateway.ConfigConstants; -//import com.alibaba.csp.sentinel.adapter.gateway.zuul.callback.RequestOriginParser; -//import com.alibaba.csp.sentinel.adapter.gateway.zuul.callback.ZuulGatewayCallbackManager; -//import com.alibaba.csp.sentinel.adapter.gateway.zuul.filters.SentinelZuulErrorFilter; -//import com.alibaba.csp.sentinel.adapter.gateway.zuul.filters.SentinelZuulPostFilter; -//import com.alibaba.csp.sentinel.adapter.gateway.zuul.filters.SentinelZuulPreFilter; -//import com.alibaba.csp.sentinel.config.SentinelConfig; -//import com.netflix.zuul.http.ZuulServlet; -//import org.slf4j.Logger; -//import org.slf4j.LoggerFactory; -// -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.beans.factory.support.DefaultListableBeanFactory; -//import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -//import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -//import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -//import org.springframework.boot.context.properties.EnableConfigurationProperties; -//import org.springframework.context.annotation.Bean; -//import org.springframework.context.annotation.Configuration; -// -///** -// * Sentinel Spring Cloud Zuul AutoConfiguration. -// * -// * @author tiger -// */ -//@Configuration(proxyBeanMethods = false) -//@ConditionalOnClass(ZuulServlet.class) -//@ConditionalOnProperty(prefix = ConfigConstants.ZUUL_PREFIX, name = "enabled", -// havingValue = "true", matchIfMissing = true) -//@EnableConfigurationProperties(SentinelZuulProperties.class) -//public class SentinelZuulAutoConfiguration { -// -// private static final Logger logger = LoggerFactory -// .getLogger(SentinelZuulAutoConfiguration.class); -// -// @Autowired -// private Optional requestOriginParserOptional; -// -// @Autowired -// private SentinelZuulProperties zuulProperties; -// -// @PostConstruct -// private void init() { -// requestOriginParserOptional -// .ifPresent(ZuulGatewayCallbackManager::setOriginParser); -// System.setProperty(SentinelConfig.APP_TYPE_PROP_KEY, -// String.valueOf(ConfigConstants.APP_TYPE_ZUUL_GATEWAY)); -// } -// -// @Bean -// @ConditionalOnMissingBean -// public SentinelZuulPreFilter sentinelZuulPreFilter() { -// logger.info("[Sentinel Zuul] register SentinelZuulPreFilter {}", -// zuulProperties.getOrder().getPre()); -// return new SentinelZuulPreFilter(zuulProperties.getOrder().getPre()); -// } -// -// @Bean -// @ConditionalOnMissingBean -// public SentinelZuulPostFilter sentinelZuulPostFilter() { -// logger.info("[Sentinel Zuul] register SentinelZuulPostFilter {}", -// zuulProperties.getOrder().getPost()); -// return new SentinelZuulPostFilter(zuulProperties.getOrder().getPost()); -// } -// -// @Bean -// @ConditionalOnMissingBean -// public SentinelZuulErrorFilter sentinelZuulErrorFilter() { -// logger.info("[Sentinel Zuul] register SentinelZuulErrorFilter {}", -// zuulProperties.getOrder().getError()); -// return new SentinelZuulErrorFilter(zuulProperties.getOrder().getError()); -// } -// -// @Bean -// public FallBackProviderHandler fallBackProviderHandler( -// DefaultListableBeanFactory beanFactory) { -// return new FallBackProviderHandler(beanFactory); -// } -// -//} diff --git a/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/src/main/java/com/alibaba/cloud/sentinel/gateway/zuul/SentinelZuulProperties.java b/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/src/main/java/com/alibaba/cloud/sentinel/gateway/zuul/SentinelZuulProperties.java deleted file mode 100644 index f1ab8da7..00000000 --- a/spring-cloud-alibaba-starters/spring-cloud-alibaba-sentinel-gateway/src/main/java/com/alibaba/cloud/sentinel/gateway/zuul/SentinelZuulProperties.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright 2013-2018 the original author or authors. - * - * 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 - * - * https://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 com.alibaba.cloud.sentinel.gateway.zuul; - -import com.alibaba.cloud.sentinel.gateway.ConfigConstants; -import com.alibaba.csp.sentinel.adapter.gateway.zuul.constants.ZuulConstant; -import com.alibaba.csp.sentinel.adapter.gateway.zuul.filters.SentinelZuulErrorFilter; -import com.alibaba.csp.sentinel.adapter.gateway.zuul.filters.SentinelZuulPostFilter; -import com.alibaba.csp.sentinel.adapter.gateway.zuul.filters.SentinelZuulPreFilter; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.boot.context.properties.NestedConfigurationProperty; - -/** - * @author Jim - */ -@ConfigurationProperties(prefix = ConfigConstants.ZUUL_PREFIX) -public class SentinelZuulProperties { - - @NestedConfigurationProperty - private SentinelZuulProperties.Order order = new SentinelZuulProperties.Order(); - - public Order getOrder() { - return order; - } - - public SentinelZuulProperties setOrder(Order order) { - this.order = order; - return this; - } - - public static class Order { - - /** - * The order of {@link SentinelZuulPreFilter}. - */ - private int pre = 10000; - - /** - * The order of {@link SentinelZuulPostFilter}. - */ - private int post = ZuulConstant.SEND_RESPONSE_FILTER_ORDER; - - /** - * The order of {@link SentinelZuulErrorFilter}. - */ - private int error = -1; - - public int getPre() { - return pre; - } - - public void setPre(int pre) { - this.pre = pre; - } - - public int getPost() { - return post; - } - - public void setPost(int post) { - this.post = post; - } - - public int getError() { - return error; - } - - public void setError(int error) { - this.error = error; - } - - } - -} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataFeignClientAutoConfiguration.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataFeignClientAutoConfiguration.java index 50659e80..701ef10c 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataFeignClientAutoConfiguration.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataFeignClientAutoConfiguration.java @@ -38,14 +38,6 @@ import org.springframework.context.annotation.Scope; @AutoConfigureBefore(FeignAutoConfiguration.class) public class SeataFeignClientAutoConfiguration { -// @Bean -// @Scope("prototype") -// @ConditionalOnClass(name = "com.netflix.hystrix.HystrixCommand") -// @ConditionalOnProperty(name = "feign.hystrix.enabled", havingValue = "true") -// Feign.Builder feignHystrixBuilder(BeanFactory beanFactory) { -// return SeataHystrixFeignBuilder.builder(beanFactory); -// } - @Bean @Scope("prototype") @ConditionalOnClass(name = "com.alibaba.csp.sentinel.SphU") diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataFeignObjectWrapper.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataFeignObjectWrapper.java index b7b4deca..5e0369a1 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataFeignObjectWrapper.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataFeignObjectWrapper.java @@ -24,10 +24,7 @@ import org.springframework.beans.factory.BeanFactory; import org.springframework.cloud.client.loadbalancer.LoadBalancerProperties; import org.springframework.cloud.loadbalancer.blocking.client.BlockingLoadBalancerClient; import org.springframework.cloud.loadbalancer.support.LoadBalancerClientFactory; -//import org.springframework.cloud.netflix.ribbon.SpringClientFactory; import org.springframework.cloud.openfeign.loadbalancer.FeignBlockingLoadBalancerClient; -//import org.springframework.cloud.openfeign.ribbon.CachingSpringLoadBalancerFactory; -//import org.springframework.cloud.openfeign.ribbon.LoadBalancerFeignClient; /** * @author xiaojing @@ -39,9 +36,6 @@ public class SeataFeignObjectWrapper { private final BeanFactory beanFactory; -// private CachingSpringLoadBalancerFactory cachingSpringLoadBalancerFactory; - -// private SpringClientFactory springClientFactory; SeataFeignObjectWrapper(BeanFactory beanFactory) { this.beanFactory = beanFactory; @@ -49,11 +43,6 @@ public class SeataFeignObjectWrapper { Object wrap(Object bean) { if (bean instanceof Client && !(bean instanceof SeataFeignClient)) { -// if (bean instanceof LoadBalancerFeignClient) { -// LoadBalancerFeignClient client = ((LoadBalancerFeignClient) bean); -// return new SeataLoadBalancerFeignClient(client.getDelegate(), factory(), -// clientFactory(), this); -// } if (bean instanceof FeignBlockingLoadBalancerClient) { FeignBlockingLoadBalancerClient client = (FeignBlockingLoadBalancerClient) bean; return new SeataFeignBlockingLoadBalancerClient(client.getDelegate(), @@ -66,21 +55,4 @@ public class SeataFeignObjectWrapper { } return bean; } - -// CachingSpringLoadBalancerFactory factory() { -// if (this.cachingSpringLoadBalancerFactory == null) { -// this.cachingSpringLoadBalancerFactory = this.beanFactory -// .getBean(CachingSpringLoadBalancerFactory.class); -// } -// return this.cachingSpringLoadBalancerFactory; -// } - -// SpringClientFactory clientFactory() { -// if (this.springClientFactory == null) { -// this.springClientFactory = this.beanFactory -// .getBean(SpringClientFactory.class); -// } -// return this.springClientFactory; -// } - } diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataHystrixFeignBuilder.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataHystrixFeignBuilder.java deleted file mode 100644 index c5b48e5a..00000000 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataHystrixFeignBuilder.java +++ /dev/null @@ -1,38 +0,0 @@ -///* -// * Copyright 2013-2018 the original author or authors. -// * -// * 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 -// * -// * https://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 com.alibaba.cloud.seata.feign; -// -//import feign.Feign; -//import feign.Retryer; -//import feign.hystrix.HystrixFeign; -// -//import org.springframework.beans.factory.BeanFactory; -// -///** -// * @author xiaojing -// */ -//final class SeataHystrixFeignBuilder { -// -// private SeataHystrixFeignBuilder() { -// } -// -// static Feign.Builder builder(BeanFactory beanFactory) { -// return HystrixFeign.builder().retryer(Retryer.NEVER_RETRY) -// .client(new SeataFeignClient(beanFactory)); -// } -// -//} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataLoadBalancerFeignClient.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataLoadBalancerFeignClient.java deleted file mode 100644 index e6525d01..00000000 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-seata/src/main/java/com/alibaba/cloud/seata/feign/SeataLoadBalancerFeignClient.java +++ /dev/null @@ -1,45 +0,0 @@ -///* -// * Copyright 2013-2018 the original author or authors. -// * -// * 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 -// * -// * https://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 com.alibaba.cloud.seata.feign; -// -//import java.io.IOException; -// -//import feign.Client; -//import feign.Request; -//import feign.Response; -// -// -///** -// * @author xiaojing -// * @author yuhuangbin -// */ -//public class SeataLoadBalancerFeignClient extends LoadBalancerFeignClient { -// -// SeataLoadBalancerFeignClient(Client delegate, -// CachingSpringLoadBalancerFactory lbClientFactory, -// SpringClientFactory clientFactory, -// SeataFeignObjectWrapper seataFeignObjectWrapper) { -// super((Client) seataFeignObjectWrapper.wrap(delegate), lbClientFactory, -// clientFactory); -// } -// -// @Override -// public Response execute(Request request, Request.Options options) throws IOException { -// return super.execute(request, options); -// } -// -//} diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelFeign.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelFeign.java index 953463ad..36caace1 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelFeign.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelFeign.java @@ -37,10 +37,8 @@ import org.springframework.context.support.GenericApplicationContext; import org.springframework.util.ReflectionUtils; import org.springframework.util.StringUtils; -import static org.springframework.beans.factory.BeanFactory.FACTORY_BEAN_PREFIX; - /** - * {@link Feign.Builder} like {@link HystrixFeign.Builder}. + * {@link Feign.Builder}. * * @author Jim */ diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelInvocationHandler.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelInvocationHandler.java index 18ff4e7e..92436d9e 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelInvocationHandler.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelInvocationHandler.java @@ -23,8 +23,6 @@ import java.lang.reflect.Proxy; import java.util.LinkedHashMap; import java.util.Map; -import org.springframework.cloud.openfeign.FallbackFactory; - import com.alibaba.csp.sentinel.Entry; import com.alibaba.csp.sentinel.EntryType; import com.alibaba.csp.sentinel.SphU; @@ -36,6 +34,8 @@ import feign.InvocationHandlerFactory.MethodHandler; import feign.MethodMetadata; import feign.Target; +import org.springframework.cloud.openfeign.FallbackFactory; + import static feign.Util.checkNotNull; /** @@ -72,7 +72,8 @@ public class SentinelInvocationHandler implements InvocationHandler { if ("equals".equals(method.getName())) { try { Object otherHandler = args.length > 0 && args[0] != null - ? Proxy.getInvocationHandler(args[0]) : null; + ? Proxy.getInvocationHandler(args[0]) + : null; return equals(otherHandler); } catch (IllegalArgumentException e) { From 65fd0ebeca7dbc02cab8b9cd5b8275e4b4933ad6 Mon Sep 17 00:00:00 2001 From: theonefx Date: Thu, 18 Mar 2021 11:11:42 +0800 Subject: [PATCH 12/15] Adapt to the latest implementation --- .../cloud/sentinel/feign/SentinelFeign.java | 7 +--- .../consul/SidecarConsulAutoRegistration.java | 38 +++++++++++++++++-- 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelFeign.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelFeign.java index 36caace1..2624aae6 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelFeign.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelFeign.java @@ -84,12 +84,9 @@ public final class SentinelFeign { BeanDefinition def = gctx.getBeanDefinition(target.type().getName()); /** - * TODO - * 由于初始化顺序发生变更,这里为了避免循环依赖,只能通过 BeanDefinition 的方式获得 FeignClientFactoryBean - * 需要重点review + * Due to the change of the initialization sequence, BeanFactory.getBean will cause a circular dependency. + * So FeignClientFactoryBean can only be obtained from BeanDefinition */ -// FeignClientFactoryBean feignClientFactoryBean = (FeignClientFactoryBean) Builder.this.applicationContext -// .getBean(FACTORY_BEAN_PREFIX + target.type().getName()); FeignClientFactoryBean feignClientFactoryBean = (FeignClientFactoryBean) def.getAttribute("feignClientsRegistrarFactoryBean"); Class fallback = feignClientFactoryBean.getFallback(); diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/consul/SidecarConsulAutoRegistration.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/consul/SidecarConsulAutoRegistration.java index ecb51e17..f03c4b31 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/consul/SidecarConsulAutoRegistration.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/consul/SidecarConsulAutoRegistration.java @@ -16,7 +16,10 @@ package com.alibaba.cloud.sidecar.consul; +import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; import com.alibaba.cloud.sidecar.SidecarProperties; import com.ecwid.consul.v1.agent.model.NewService; @@ -29,6 +32,8 @@ import org.springframework.cloud.consul.serviceregistry.ConsulManagementRegistra import org.springframework.cloud.consul.serviceregistry.ConsulRegistrationCustomizer; import org.springframework.context.ApplicationContext; import org.springframework.core.env.Environment; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; /** * @author www.itmuch.com @@ -59,12 +64,13 @@ public class SidecarConsulAutoRegistration extends ConsulAutoRegistration { service.setAddress(sidecarProperties.getIp()); } service.setName(normalizeForDns(appName)); - service.setTags(properties.getTags()); + service.setTags(new ArrayList<>(properties.getTags())); + service.setEnableTagOverride(properties.getEnableTagOverride()); + service.setMeta(getMetadata(properties)); // set health check, use alibaba sidecar self's port rather than polyglot app's // port. - service.setPort( - Integer.valueOf(context.getEnvironment().getProperty("server.port"))); + service.setPort(Integer.valueOf(context.getEnvironment().getProperty("server.port"))); setCheck(service, autoServiceRegistrationProperties, properties, context, heartbeatProperties); @@ -77,6 +83,32 @@ public class SidecarConsulAutoRegistration extends ConsulAutoRegistration { return registration; } + /** + * copyed from org.springframework.cloud.consul.serviceregistry.ConsulAutoRegistration#getMetadata + */ + private static Map getMetadata(ConsulDiscoveryProperties properties) { + LinkedHashMap metadata = new LinkedHashMap<>(); + if (!CollectionUtils.isEmpty(properties.getMetadata())) { + metadata.putAll(properties.getMetadata()); + } + + // add metadata from other properties. See createTags above. + if (!StringUtils.isEmpty(properties.getInstanceZone())) { + metadata.put(properties.getDefaultZoneMetadataName(), + properties.getInstanceZone()); + } + if (!StringUtils.isEmpty(properties.getInstanceGroup())) { + metadata.put("group", properties.getInstanceGroup()); + } + + // store the secure flag in the tags so that clients will be able to figure + // out whether to use http or https automatically + metadata.put("secure", + Boolean.toString(properties.getScheme().equalsIgnoreCase("https"))); + + return metadata; + } + public static String getInstanceId(SidecarProperties sidecarProperties, Environment environment) { return String.format("%s-%s-%s", From e8cd8f4dab0ec66f4c8a58c9056f7627ab0747e3 Mon Sep 17 00:00:00 2001 From: theonefx Date: Thu, 18 Mar 2021 11:25:28 +0800 Subject: [PATCH 13/15] reformat --- .../cloud/sidecar/consul/SidecarConsulAutoRegistration.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/consul/SidecarConsulAutoRegistration.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/consul/SidecarConsulAutoRegistration.java index f03c4b31..094010ae 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/consul/SidecarConsulAutoRegistration.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/consul/SidecarConsulAutoRegistration.java @@ -70,7 +70,8 @@ public class SidecarConsulAutoRegistration extends ConsulAutoRegistration { // set health check, use alibaba sidecar self's port rather than polyglot app's // port. - service.setPort(Integer.valueOf(context.getEnvironment().getProperty("server.port"))); + service.setPort( + Integer.valueOf(context.getEnvironment().getProperty("server.port"))); setCheck(service, autoServiceRegistrationProperties, properties, context, heartbeatProperties); @@ -84,7 +85,8 @@ public class SidecarConsulAutoRegistration extends ConsulAutoRegistration { } /** - * copyed from org.springframework.cloud.consul.serviceregistry.ConsulAutoRegistration#getMetadata + * copyed from + * org.springframework.cloud.consul.serviceregistry.ConsulAutoRegistration#getMetadata */ private static Map getMetadata(ConsulDiscoveryProperties properties) { LinkedHashMap metadata = new LinkedHashMap<>(); From a80e9106a6744272808f153f8d824bfa24c83394 Mon Sep 17 00:00:00 2001 From: theonefx Date: Thu, 18 Mar 2021 14:59:56 +0800 Subject: [PATCH 14/15] reformat --- .../cloud/sidecar/consul/SidecarConsulAutoRegistration.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/consul/SidecarConsulAutoRegistration.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/consul/SidecarConsulAutoRegistration.java index 094010ae..d0435bb1 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/consul/SidecarConsulAutoRegistration.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/consul/SidecarConsulAutoRegistration.java @@ -86,7 +86,7 @@ public class SidecarConsulAutoRegistration extends ConsulAutoRegistration { /** * copyed from - * org.springframework.cloud.consul.serviceregistry.ConsulAutoRegistration#getMetadata + * org.springframework.cloud.consul.serviceregistry.ConsulAutoRegistration#getMetadata. */ private static Map getMetadata(ConsulDiscoveryProperties properties) { LinkedHashMap metadata = new LinkedHashMap<>(); From 76cfd2c7fe36a49ec617015afc607f8a7540b3b9 Mon Sep 17 00:00:00 2001 From: theonefx Date: Fri, 19 Mar 2021 11:20:30 +0800 Subject: [PATCH 15/15] port optimize --- .../consul/SidecarConsulAutoRegistration.java | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/consul/SidecarConsulAutoRegistration.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/consul/SidecarConsulAutoRegistration.java index d0435bb1..051faea3 100644 --- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/consul/SidecarConsulAutoRegistration.java +++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sidecar/src/main/java/com/alibaba/cloud/sidecar/consul/SidecarConsulAutoRegistration.java @@ -68,14 +68,24 @@ public class SidecarConsulAutoRegistration extends ConsulAutoRegistration { service.setEnableTagOverride(properties.getEnableTagOverride()); service.setMeta(getMetadata(properties)); - // set health check, use alibaba sidecar self's port rather than polyglot app's - // port. - service.setPort( - Integer.valueOf(context.getEnvironment().getProperty("server.port"))); - setCheck(service, autoServiceRegistrationProperties, properties, context, - heartbeatProperties); + if (sidecarProperties.getPort() != null && sidecarProperties.getPort() > 0) { + service.setPort(properties.getPort()); + } + else if (properties.getPort() != null && properties.getPort() > 0) { + service.setPort(properties.getPort()); + } + else if (context.getEnvironment().getProperty("server.port") != null) { + // set health check, use alibaba sidecar self's port rather than polyglot + // app's port. + service.setPort( + Integer.valueOf(context.getEnvironment().getProperty("server.port"))); + } - service.setPort(sidecarProperties.getPort()); + if (service.getPort() != null) { + // we know the port and can set the check + setCheck(service, autoServiceRegistrationProperties, properties, context, + heartbeatProperties); + } ConsulAutoRegistration registration = new ConsulAutoRegistration(service, autoServiceRegistrationProperties, properties, context,