From 8c15881a393fbf4e47850ed64f4dacd70a9435ae Mon Sep 17 00:00:00 2001 From: kehfan Date: Tue, 9 Jul 2024 18:31:22 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OpenFeign/pom.xml | 53 +++++++++++++++++++ .../lowcode/extension/OpenFeignAutoScan.java | 10 ++++ .../lowcode/extension/OpenFeignConfig.java | 14 +++++ .../extension/feign/ExtensionUserClient.java | 11 ++++ .../extension/service/UserService.java | 23 ++++++++ .../main/resources/META-INF/spring.factories | 3 ++ 6 files changed, 114 insertions(+) create mode 100644 OpenFeign/pom.xml create mode 100644 OpenFeign/src/main/java/com/netease/lowcode/extension/OpenFeignAutoScan.java create mode 100644 OpenFeign/src/main/java/com/netease/lowcode/extension/OpenFeignConfig.java create mode 100644 OpenFeign/src/main/java/com/netease/lowcode/extension/feign/ExtensionUserClient.java create mode 100644 OpenFeign/src/main/java/com/netease/lowcode/extension/service/UserService.java create mode 100644 OpenFeign/src/main/resources/META-INF/spring.factories diff --git a/OpenFeign/pom.xml b/OpenFeign/pom.xml new file mode 100644 index 000000000..064020c5c --- /dev/null +++ b/OpenFeign/pom.xml @@ -0,0 +1,53 @@ + + + 4.0.0 + + com.netease.lowcode.extension + OpenFeign + 1.0.5 + + + 8 + 8 + UTF-8 + + + + + org.springframework.cloud + spring-cloud-starter-openfeign + + 2.2.9.RELEASE + + + + nasl-metadata-collector + com.netease.lowcode + 0.8.0 + true + + + + + + + com.netease.lowcode + nasl-metadata-maven-plugin + 1.4.2 + + false + false + + + + + archive + + + + + + + \ No newline at end of file diff --git a/OpenFeign/src/main/java/com/netease/lowcode/extension/OpenFeignAutoScan.java b/OpenFeign/src/main/java/com/netease/lowcode/extension/OpenFeignAutoScan.java new file mode 100644 index 000000000..3872d53d4 --- /dev/null +++ b/OpenFeign/src/main/java/com/netease/lowcode/extension/OpenFeignAutoScan.java @@ -0,0 +1,10 @@ +package com.netease.lowcode.extension; + +import com.netease.lowcode.extension.service.UserService; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ComponentScan(basePackageClasses = {UserService.class}) +public class OpenFeignAutoScan { +} diff --git a/OpenFeign/src/main/java/com/netease/lowcode/extension/OpenFeignConfig.java b/OpenFeign/src/main/java/com/netease/lowcode/extension/OpenFeignConfig.java new file mode 100644 index 000000000..dc14ec076 --- /dev/null +++ b/OpenFeign/src/main/java/com/netease/lowcode/extension/OpenFeignConfig.java @@ -0,0 +1,14 @@ +package com.netease.lowcode.extension; + +import com.netease.lowcode.extension.feign.ExtensionUserClient; +import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.context.annotation.Configuration; + +@Configuration +@EnableFeignClients(basePackageClasses = ExtensionUserClient.class) +public class OpenFeignConfig { + + public OpenFeignConfig() { + System.out.println("OpenFeignConfig 扫描成功"); + } +} diff --git a/OpenFeign/src/main/java/com/netease/lowcode/extension/feign/ExtensionUserClient.java b/OpenFeign/src/main/java/com/netease/lowcode/extension/feign/ExtensionUserClient.java new file mode 100644 index 000000000..588fb3a65 --- /dev/null +++ b/OpenFeign/src/main/java/com/netease/lowcode/extension/feign/ExtensionUserClient.java @@ -0,0 +1,11 @@ +package com.netease.lowcode.extension.feign; + +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; + +@FeignClient(name="extensionUserClient",url = "http://dev.nacos.cstest.lcap.codewave-test.163yun.com") +public interface ExtensionUserClient { + + @GetMapping("/rest/hello") + String hello(); +} diff --git a/OpenFeign/src/main/java/com/netease/lowcode/extension/service/UserService.java b/OpenFeign/src/main/java/com/netease/lowcode/extension/service/UserService.java new file mode 100644 index 000000000..f7c7b95ca --- /dev/null +++ b/OpenFeign/src/main/java/com/netease/lowcode/extension/service/UserService.java @@ -0,0 +1,23 @@ +package com.netease.lowcode.extension.service; + +import com.netease.lowcode.core.annotation.NaslLogic; +import com.netease.lowcode.extension.feign.ExtensionUserClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class UserService { + + private static ExtensionUserClient extensionUserClient; + + @NaslLogic + public static String hello() { + return extensionUserClient.hello(); + } + + + @Autowired + public void setUserClient(ExtensionUserClient extensionUserClient) { + UserService.extensionUserClient = extensionUserClient; + } +} diff --git a/OpenFeign/src/main/resources/META-INF/spring.factories b/OpenFeign/src/main/resources/META-INF/spring.factories new file mode 100644 index 000000000..e89a2b8af --- /dev/null +++ b/OpenFeign/src/main/resources/META-INF/spring.factories @@ -0,0 +1,3 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ + com.netease.lowcode.extension.OpenFeignConfig,\ + com.netease.lowcode.extension.OpenFeignAutoScan From c6c43f6c93b61b4d5e45669e8e523e2aaa33f091 Mon Sep 17 00:00:00 2001 From: kehfan Date: Wed, 10 Jul 2024 11:01:43 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=86=94=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OpenFeign/pom.xml | 12 ++++++++--- .../extension/OpenFeignCustomConfig.java | 20 +++++++++++++++++++ .../ExtensionUserClientWithFallback.java | 16 +++++++++++++++ .../service/ExtensionUserClientFallback.java | 13 ++++++++++++ .../extension/service/UserService.java | 20 +++++++++++++++++++ 5 files changed, 78 insertions(+), 3 deletions(-) create mode 100644 OpenFeign/src/main/java/com/netease/lowcode/extension/OpenFeignCustomConfig.java create mode 100644 OpenFeign/src/main/java/com/netease/lowcode/extension/feign/ExtensionUserClientWithFallback.java create mode 100644 OpenFeign/src/main/java/com/netease/lowcode/extension/service/ExtensionUserClientFallback.java diff --git a/OpenFeign/pom.xml b/OpenFeign/pom.xml index 064020c5c..8755f8e96 100644 --- a/OpenFeign/pom.xml +++ b/OpenFeign/pom.xml @@ -6,21 +6,27 @@ com.netease.lowcode.extension OpenFeign - 1.0.5 + 1.0.8 8 8 UTF-8 + + 2.2.9.RELEASE org.springframework.cloud spring-cloud-starter-openfeign - - 2.2.9.RELEASE + ${spring.boot.version} + + + + + nasl-metadata-collector diff --git a/OpenFeign/src/main/java/com/netease/lowcode/extension/OpenFeignCustomConfig.java b/OpenFeign/src/main/java/com/netease/lowcode/extension/OpenFeignCustomConfig.java new file mode 100644 index 000000000..201ab2f3b --- /dev/null +++ b/OpenFeign/src/main/java/com/netease/lowcode/extension/OpenFeignCustomConfig.java @@ -0,0 +1,20 @@ +package com.netease.lowcode.extension; + +import feign.hystrix.HystrixFeign; +import org.springframework.context.annotation.Bean; + +// 不用加 @Configuration +public class OpenFeignCustomConfig { + + /** + * 开启熔断器 + * feign.hystrix.enabled = true + * + * @return + */ + @Bean + public HystrixFeign.Builder feignHystrixBuilder() { + return HystrixFeign.builder(); + } + +} diff --git a/OpenFeign/src/main/java/com/netease/lowcode/extension/feign/ExtensionUserClientWithFallback.java b/OpenFeign/src/main/java/com/netease/lowcode/extension/feign/ExtensionUserClientWithFallback.java new file mode 100644 index 000000000..586a6d4a5 --- /dev/null +++ b/OpenFeign/src/main/java/com/netease/lowcode/extension/feign/ExtensionUserClientWithFallback.java @@ -0,0 +1,16 @@ +package com.netease.lowcode.extension.feign; + +import com.netease.lowcode.extension.OpenFeignCustomConfig; +import com.netease.lowcode.extension.service.ExtensionUserClientFallback; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; + +@FeignClient(name = "extensionUserClientWithFallback", + url = "http://dev.nacos.cstest.lcap.codewave-test.163yun.com", + configuration = OpenFeignCustomConfig.class, + fallback = ExtensionUserClientFallback.class) +public interface ExtensionUserClientWithFallback { + + @GetMapping("/rest/hello") + String hello(); +} diff --git a/OpenFeign/src/main/java/com/netease/lowcode/extension/service/ExtensionUserClientFallback.java b/OpenFeign/src/main/java/com/netease/lowcode/extension/service/ExtensionUserClientFallback.java new file mode 100644 index 000000000..90f3a65f3 --- /dev/null +++ b/OpenFeign/src/main/java/com/netease/lowcode/extension/service/ExtensionUserClientFallback.java @@ -0,0 +1,13 @@ +package com.netease.lowcode.extension.service; + +import com.netease.lowcode.extension.feign.ExtensionUserClientWithFallback; +import org.springframework.stereotype.Component; + +@Component +public class ExtensionUserClientFallback implements ExtensionUserClientWithFallback { + + @Override + public String hello() { + return "触发熔断"; + } +} diff --git a/OpenFeign/src/main/java/com/netease/lowcode/extension/service/UserService.java b/OpenFeign/src/main/java/com/netease/lowcode/extension/service/UserService.java index f7c7b95ca..b4cd90326 100644 --- a/OpenFeign/src/main/java/com/netease/lowcode/extension/service/UserService.java +++ b/OpenFeign/src/main/java/com/netease/lowcode/extension/service/UserService.java @@ -2,6 +2,7 @@ import com.netease.lowcode.core.annotation.NaslLogic; import com.netease.lowcode.extension.feign.ExtensionUserClient; +import com.netease.lowcode.extension.feign.ExtensionUserClientWithFallback; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -9,15 +10,34 @@ public class UserService { private static ExtensionUserClient extensionUserClient; + private static ExtensionUserClientWithFallback extensionUserClientWithFallback; + /** + * 普通接口调用 + * + * @return + */ @NaslLogic public static String hello() { return extensionUserClient.hello(); } + /** + * 开启熔断器的接口调用 + * + * @return + */ + @NaslLogic + public static String helloWithFallback() { + return extensionUserClientWithFallback.hello(); + } @Autowired public void setUserClient(ExtensionUserClient extensionUserClient) { UserService.extensionUserClient = extensionUserClient; } + @Autowired + public void setExtensionUserClientWithFallback(ExtensionUserClientWithFallback extensionUserClientWithFallback){ + UserService.extensionUserClientWithFallback = extensionUserClientWithFallback; + } } From 6776857e0f6f33025e31ff2846c5653e08a6d958 Mon Sep 17 00:00:00 2001 From: kehfan Date: Wed, 10 Jul 2024 11:06:40 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OpenFeign/pom.xml | 5 ----- .../com/netease/lowcode/extension/service/UserService.java | 2 ++ 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/OpenFeign/pom.xml b/OpenFeign/pom.xml index 8755f8e96..26ef3e23c 100644 --- a/OpenFeign/pom.xml +++ b/OpenFeign/pom.xml @@ -22,11 +22,6 @@ spring-cloud-starter-openfeign ${spring.boot.version} - - - - - nasl-metadata-collector diff --git a/OpenFeign/src/main/java/com/netease/lowcode/extension/service/UserService.java b/OpenFeign/src/main/java/com/netease/lowcode/extension/service/UserService.java index b4cd90326..73d7df706 100644 --- a/OpenFeign/src/main/java/com/netease/lowcode/extension/service/UserService.java +++ b/OpenFeign/src/main/java/com/netease/lowcode/extension/service/UserService.java @@ -14,6 +14,7 @@ public class UserService { /** * 普通接口调用 + * 当服务不可用时直接异常 * * @return */ @@ -24,6 +25,7 @@ public static String hello() { /** * 开启熔断器的接口调用 + * 当调用服务不可用时将触发熔断降级 * * @return */ From 39677e2ee9f54352f2817a7f039f313dae27953c Mon Sep 17 00:00:00 2001 From: kehfan Date: Wed, 10 Jul 2024 15:57:59 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=86=94=E6=96=AD?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OpenFeign/pom.xml | 3 ++- .../extension/OpenFeignCustomConfig.java | 20 ------------------ .../OpenFeignEnvironmentPostProcessor.java | 21 +++++++++++++++++++ .../ExtensionUserClientWithFallback.java | 2 -- .../main/resources/META-INF/spring.factories | 2 ++ 5 files changed, 25 insertions(+), 23 deletions(-) delete mode 100644 OpenFeign/src/main/java/com/netease/lowcode/extension/OpenFeignCustomConfig.java create mode 100644 OpenFeign/src/main/java/com/netease/lowcode/extension/OpenFeignEnvironmentPostProcessor.java diff --git a/OpenFeign/pom.xml b/OpenFeign/pom.xml index 26ef3e23c..a13d526ad 100644 --- a/OpenFeign/pom.xml +++ b/OpenFeign/pom.xml @@ -6,7 +6,7 @@ com.netease.lowcode.extension OpenFeign - 1.0.8 + 1.0.15 8 @@ -17,6 +17,7 @@ + org.springframework.cloud spring-cloud-starter-openfeign diff --git a/OpenFeign/src/main/java/com/netease/lowcode/extension/OpenFeignCustomConfig.java b/OpenFeign/src/main/java/com/netease/lowcode/extension/OpenFeignCustomConfig.java deleted file mode 100644 index 201ab2f3b..000000000 --- a/OpenFeign/src/main/java/com/netease/lowcode/extension/OpenFeignCustomConfig.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.netease.lowcode.extension; - -import feign.hystrix.HystrixFeign; -import org.springframework.context.annotation.Bean; - -// 不用加 @Configuration -public class OpenFeignCustomConfig { - - /** - * 开启熔断器 - * feign.hystrix.enabled = true - * - * @return - */ - @Bean - public HystrixFeign.Builder feignHystrixBuilder() { - return HystrixFeign.builder(); - } - -} diff --git a/OpenFeign/src/main/java/com/netease/lowcode/extension/OpenFeignEnvironmentPostProcessor.java b/OpenFeign/src/main/java/com/netease/lowcode/extension/OpenFeignEnvironmentPostProcessor.java new file mode 100644 index 000000000..a73641ca0 --- /dev/null +++ b/OpenFeign/src/main/java/com/netease/lowcode/extension/OpenFeignEnvironmentPostProcessor.java @@ -0,0 +1,21 @@ +package com.netease.lowcode.extension; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.env.EnvironmentPostProcessor; +import org.springframework.core.env.ConfigurableEnvironment; +import org.springframework.core.env.MapPropertySource; + +import java.util.HashMap; +import java.util.Map; + +public class OpenFeignEnvironmentPostProcessor implements EnvironmentPostProcessor { + @Override + public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { + Map config = new HashMap<>(); + config.put("feign.hystrix.enabled",true); + config.put("hystrix.command.default.circuitBreaker.requestVolumeThreshold",2); + config.put("hystrix.command.default.circuitBreaker.errorThresholdPercentage",0); + + environment.getPropertySources().addLast(new MapPropertySource("OPENFEIGNMAP",config)); + } +} diff --git a/OpenFeign/src/main/java/com/netease/lowcode/extension/feign/ExtensionUserClientWithFallback.java b/OpenFeign/src/main/java/com/netease/lowcode/extension/feign/ExtensionUserClientWithFallback.java index 586a6d4a5..89e7fd476 100644 --- a/OpenFeign/src/main/java/com/netease/lowcode/extension/feign/ExtensionUserClientWithFallback.java +++ b/OpenFeign/src/main/java/com/netease/lowcode/extension/feign/ExtensionUserClientWithFallback.java @@ -1,13 +1,11 @@ package com.netease.lowcode.extension.feign; -import com.netease.lowcode.extension.OpenFeignCustomConfig; import com.netease.lowcode.extension.service.ExtensionUserClientFallback; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; @FeignClient(name = "extensionUserClientWithFallback", url = "http://dev.nacos.cstest.lcap.codewave-test.163yun.com", - configuration = OpenFeignCustomConfig.class, fallback = ExtensionUserClientFallback.class) public interface ExtensionUserClientWithFallback { diff --git a/OpenFeign/src/main/resources/META-INF/spring.factories b/OpenFeign/src/main/resources/META-INF/spring.factories index e89a2b8af..8c3091527 100644 --- a/OpenFeign/src/main/resources/META-INF/spring.factories +++ b/OpenFeign/src/main/resources/META-INF/spring.factories @@ -1,3 +1,5 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.netease.lowcode.extension.OpenFeignConfig,\ com.netease.lowcode.extension.OpenFeignAutoScan +org.springframework.boot.env.EnvironmentPostProcessor=\ + com.netease.lowcode.extension.OpenFeignEnvironmentPostProcessor \ No newline at end of file From aa0619c095d939393fa636afbfac6ae7af4d4df4 Mon Sep 17 00:00:00 2001 From: kehfan Date: Wed, 10 Jul 2024 17:35:02 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OpenFeign/README.md | 0 ...\224\250\346\226\207\346\241\243\350\257\264\346\230\216.docx" | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 OpenFeign/README.md create mode 100644 "OpenFeign/\344\276\235\350\265\226\345\272\223\344\275\277\347\224\250\346\226\207\346\241\243\350\257\264\346\230\216.docx" diff --git a/OpenFeign/README.md b/OpenFeign/README.md new file mode 100644 index 000000000..e69de29bb diff --git "a/OpenFeign/\344\276\235\350\265\226\345\272\223\344\275\277\347\224\250\346\226\207\346\241\243\350\257\264\346\230\216.docx" "b/OpenFeign/\344\276\235\350\265\226\345\272\223\344\275\277\347\224\250\346\226\207\346\241\243\350\257\264\346\230\216.docx" new file mode 100644 index 000000000..e69de29bb