From 5d46285aceefaacc8ba10f6ea96c72d301c849b8 Mon Sep 17 00:00:00 2001 From: YunaiV <> Date: Fri, 15 May 2020 09:20:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20Dubbo=20+=20Hystrix=20?= =?UTF-8?q?=E5=85=A5=E9=97=A8=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lab-57/lab-57-hystrix-demo01/pom.xml | 4 - .../hystrixdemo/config/HystrixConfig.java | 2 +- .../pom.xml | 85 +++++++++++++++++++ .../labx23/demo/DemoApplication.java | 15 ++++ .../demo/controller/DemoController.java | 35 ++++++++ .../src/main/resources/application.yaml | 17 ++++ .../pom.xml | 14 +++ .../lab57/userservice/api/UserService.java | 7 ++ .../pom.xml | 73 ++++++++++++++++ .../userservice/UserServiceApplication.java | 13 +++ .../userservice/service/UserServiceImpl.java | 13 +++ .../src/main/resources/application.yaml | 24 ++++++ lab-57/lab-57-hystrix-dubbo-demo/pom.xml | 22 +++++ lab-57/lab-57-user-service/pom.xml | 4 - lab-57/pom.xml | 1 + 15 files changed, 320 insertions(+), 9 deletions(-) create mode 100644 lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-application/pom.xml create mode 100644 lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-application/src/main/java/cn/iocoder/springcloud/labx23/demo/DemoApplication.java create mode 100644 lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-application/src/main/java/cn/iocoder/springcloud/labx23/demo/controller/DemoController.java create mode 100644 lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-application/src/main/resources/application.yaml create mode 100644 lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-user-service-api/pom.xml create mode 100644 lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-user-service-api/src/main/java/cn/iocoder/springboot/lab57/userservice/api/UserService.java create mode 100644 lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-user-service/pom.xml create mode 100644 lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-user-service/src/main/java/cn/iocoder/springcloud/labx23/userservice/UserServiceApplication.java create mode 100644 lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-user-service/src/main/java/cn/iocoder/springcloud/labx23/userservice/service/UserServiceImpl.java create mode 100644 lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-user-service/src/main/resources/application.yaml create mode 100644 lab-57/lab-57-hystrix-dubbo-demo/pom.xml diff --git a/lab-57/lab-57-hystrix-demo01/pom.xml b/lab-57/lab-57-hystrix-demo01/pom.xml index d07626bc..796d6999 100644 --- a/lab-57/lab-57-hystrix-demo01/pom.xml +++ b/lab-57/lab-57-hystrix-demo01/pom.xml @@ -17,10 +17,6 @@ 2.2.4.RELEASE - diff --git a/lab-57/lab-57-hystrix-demo01/src/main/java/cn/iocoder/springboot/lab57/hystrixdemo/config/HystrixConfig.java b/lab-57/lab-57-hystrix-demo01/src/main/java/cn/iocoder/springboot/lab57/hystrixdemo/config/HystrixConfig.java index 9558e570..953308fd 100644 --- a/lab-57/lab-57-hystrix-demo01/src/main/java/cn/iocoder/springboot/lab57/hystrixdemo/config/HystrixConfig.java +++ b/lab-57/lab-57-hystrix-demo01/src/main/java/cn/iocoder/springboot/lab57/hystrixdemo/config/HystrixConfig.java @@ -6,7 +6,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.EnableAspectJAutoProxy; @Configuration -@EnableAspectJAutoProxy +@EnableAspectJAutoProxy // 开启 AOP 代理的支持 public class HystrixConfig { @Bean diff --git a/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-application/pom.xml b/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-application/pom.xml new file mode 100644 index 00000000..69610e60 --- /dev/null +++ b/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-application/pom.xml @@ -0,0 +1,85 @@ + + + + lab-57-hystrix-dubbo-demo + cn.iocoder.springboot.labs + 1.0-SNAPSHOT + + 4.0.0 + + lab-57-hystrix-dubbo-demo-application + + + 1.8 + 1.8 + 2.2.4.RELEASE + Hoxton.SR1 + 2.2.0.RELEASE + + + + + + + org.springframework.boot + spring-boot-starter-parent + ${spring.boot.version} + pom + import + + + org.springframework.cloud + spring-cloud-dependencies + ${spring.cloud.version} + pom + import + + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + ${spring.cloud.alibaba.version} + pom + import + + + + + + + + cn.iocoder.springboot.labs + lab-57-hystrix-dubbo-demo-user-service-api + 1.0-SNAPSHOT + + + + + org.springframework.boot + spring-boot-starter-web + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + + com.alibaba.cloud + spring-cloud-starter-dubbo + + + + + org.springframework.cloud + spring-cloud-starter-netflix-hystrix + + + + diff --git a/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-application/src/main/java/cn/iocoder/springcloud/labx23/demo/DemoApplication.java b/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-application/src/main/java/cn/iocoder/springcloud/labx23/demo/DemoApplication.java new file mode 100644 index 00000000..fc9b5e6c --- /dev/null +++ b/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-application/src/main/java/cn/iocoder/springcloud/labx23/demo/DemoApplication.java @@ -0,0 +1,15 @@ +package cn.iocoder.springcloud.labx23.demo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker; + +@SpringBootApplication +@EnableCircuitBreaker // 声明开启断路器 +public class DemoApplication { + + public static void main(String[] args) { + SpringApplication.run(DemoApplication.class, args); + } + +} diff --git a/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-application/src/main/java/cn/iocoder/springcloud/labx23/demo/controller/DemoController.java b/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-application/src/main/java/cn/iocoder/springcloud/labx23/demo/controller/DemoController.java new file mode 100644 index 00000000..ae52860f --- /dev/null +++ b/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-application/src/main/java/cn/iocoder/springcloud/labx23/demo/controller/DemoController.java @@ -0,0 +1,35 @@ +package cn.iocoder.springcloud.labx23.demo.controller; + +import cn.iocoder.springcloud.labx23.userservice.api.UserService; +import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand; +import org.apache.commons.lang.exception.ExceptionUtils; +import org.apache.dubbo.config.annotation.Reference; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/demo") +public class DemoController { + + private Logger logger = LoggerFactory.getLogger(getClass()); + + @Reference(protocol = "dubbo", version = "1.0.0") + private UserService userService; + + @GetMapping("/get_user") + @HystrixCommand(fallbackMethod = "getUserFallback") + public String getUser(@RequestParam("id") Integer id) { + logger.info("[getUser][准备调用 user-service 获取用户({})详情]", id); + return userService.getUser(id); + } + + public String getUserFallback(Integer id, Throwable throwable) { + logger.info("[getUserFallback][id({}) exception({})]", id, ExceptionUtils.getRootCauseMessage(throwable)); + return "mock:User:" + id; + } + +} diff --git a/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-application/src/main/resources/application.yaml b/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-application/src/main/resources/application.yaml new file mode 100644 index 00000000..e41d088e --- /dev/null +++ b/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-application/src/main/resources/application.yaml @@ -0,0 +1,17 @@ +spring: + application: + name: demo-consumer + cloud: + # Nacos 作为注册中心的配置项 + nacos: + discovery: + server-addr: 127.0.0.1:8848 + +# Dubbo 配置项,对应 DubboConfigurationProperties 类 +dubbo: + # Dubbo 服务注册中心配置,对应 RegistryConfig 类 + registry: + address: spring-cloud://127.0.0.1:8848 # 指定 Dubbo 服务注册中心的地址 + # Spring Cloud Alibaba Dubbo 专属配置项,对应 DubboCloudProperties 类 + cloud: + subscribed-services: user-service # 设置订阅的应用列表,默认为 * 订阅所有应用。 diff --git a/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-user-service-api/pom.xml b/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-user-service-api/pom.xml new file mode 100644 index 00000000..081ce7cb --- /dev/null +++ b/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-user-service-api/pom.xml @@ -0,0 +1,14 @@ + + + + lab-57-hystrix-dubbo-demo + cn.iocoder.springboot.labs + 1.0-SNAPSHOT + + 4.0.0 + + lab-57-hystrix-dubbo-demo-user-service-api + + diff --git a/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-user-service-api/src/main/java/cn/iocoder/springboot/lab57/userservice/api/UserService.java b/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-user-service-api/src/main/java/cn/iocoder/springboot/lab57/userservice/api/UserService.java new file mode 100644 index 00000000..71bba3d3 --- /dev/null +++ b/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-user-service-api/src/main/java/cn/iocoder/springboot/lab57/userservice/api/UserService.java @@ -0,0 +1,7 @@ +package cn.iocoder.springboot.lab57.userservice.api; + +public interface UserService { + + String getUser(Integer id); + +} diff --git a/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-user-service/pom.xml b/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-user-service/pom.xml new file mode 100644 index 00000000..eafc1bf9 --- /dev/null +++ b/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-user-service/pom.xml @@ -0,0 +1,73 @@ + + + + lab-57-hystrix-dubbo-demo + cn.iocoder.springboot.labs + 1.0-SNAPSHOT + + 4.0.0 + + lab-57-hystrix-dubbo-demo-user-service + + + 1.8 + 1.8 + 2.2.4.RELEASE + Hoxton.SR1 + 2.2.0.RELEASE + + + + + + + org.springframework.boot + spring-boot-starter-parent + ${spring.boot.version} + pom + import + + + org.springframework.cloud + spring-cloud-dependencies + ${spring.cloud.version} + pom + import + + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + ${spring.cloud.alibaba.version} + pom + import + + + + + + + + cn.iocoder.springboot.labs + lab-57-hystrix-dubbo-demo-user-service-api + 1.0-SNAPSHOT + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + + com.alibaba.cloud + spring-cloud-starter-dubbo + + + + diff --git a/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-user-service/src/main/java/cn/iocoder/springcloud/labx23/userservice/UserServiceApplication.java b/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-user-service/src/main/java/cn/iocoder/springcloud/labx23/userservice/UserServiceApplication.java new file mode 100644 index 00000000..4c8cff75 --- /dev/null +++ b/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-user-service/src/main/java/cn/iocoder/springcloud/labx23/userservice/UserServiceApplication.java @@ -0,0 +1,13 @@ +package cn.iocoder.springcloud.labx23.userservice; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class UserServiceApplication { + + public static void main(String[] args) { + SpringApplication.run(UserServiceApplication.class); + } + +} diff --git a/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-user-service/src/main/java/cn/iocoder/springcloud/labx23/userservice/service/UserServiceImpl.java b/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-user-service/src/main/java/cn/iocoder/springcloud/labx23/userservice/service/UserServiceImpl.java new file mode 100644 index 00000000..2215bdc3 --- /dev/null +++ b/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-user-service/src/main/java/cn/iocoder/springcloud/labx23/userservice/service/UserServiceImpl.java @@ -0,0 +1,13 @@ +package cn.iocoder.springcloud.labx23.userservice.service; + +import cn.iocoder.springcloud.labx23.userservice.api.UserService; + +@org.apache.dubbo.config.annotation.Service(protocol = "dubbo", version = "1.0.0") +public class UserServiceImpl implements UserService { + + @Override + public String getUser(Integer id) { + return "User:" + id; + } + +} diff --git a/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-user-service/src/main/resources/application.yaml b/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-user-service/src/main/resources/application.yaml new file mode 100644 index 00000000..f62232a7 --- /dev/null +++ b/lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-user-service/src/main/resources/application.yaml @@ -0,0 +1,24 @@ +spring: + application: + name: user-service + cloud: + # Nacos 作为注册中心的配置项 + nacos: + discovery: + server-addr: 127.0.0.1:8848 # Nacos 服务器地址 + +# Dubbo 配置项,对应 DubboConfigurationProperties 类 +dubbo: + scan: + base-packages: cn.iocoder.springcloud.labx23.userservice.service # 指定 Dubbo 服务实现类的扫描基准包 + # Dubbo 服务暴露的协议配置,对应 ProtocolConfig Map + protocols: + dubbo: + name: dubbo # 协议名称 + port: -1 # 协议端口,-1 表示自增端口,从 20880 开始 + # Dubbo 服务注册中心配置,对应 RegistryConfig 类 + registry: + address: spring-cloud://127.0.0.1:8848 # 指定 Dubbo 服务注册中心的地址 + # Spring Cloud Alibaba Dubbo 专属配置项,对应 DubboCloudProperties 类 + cloud: + subscribed-services: '' # 设置订阅的应用列表,默认为 * 订阅所有应用。 diff --git a/lab-57/lab-57-hystrix-dubbo-demo/pom.xml b/lab-57/lab-57-hystrix-dubbo-demo/pom.xml new file mode 100644 index 00000000..d106b161 --- /dev/null +++ b/lab-57/lab-57-hystrix-dubbo-demo/pom.xml @@ -0,0 +1,22 @@ + + + + labx-23 + cn.iocoder.springboot.labs + 1.0-SNAPSHOT + + 4.0.0 + + lab-57-hystrix-dubbo-demo + pom + + + lab-57-hystrix-dubbo-demo-user-service + lab-57-hystrix-dubbo-demo-user-service-api + lab-57-hystrix-dubbo-demo-application + + + + diff --git a/lab-57/lab-57-user-service/pom.xml b/lab-57/lab-57-user-service/pom.xml index 508a1975..0040aae3 100644 --- a/lab-57/lab-57-user-service/pom.xml +++ b/lab-57/lab-57-user-service/pom.xml @@ -17,10 +17,6 @@ 2.2.4.RELEASE - diff --git a/lab-57/pom.xml b/lab-57/pom.xml index b2655be7..4a2dfee4 100644 --- a/lab-57/pom.xml +++ b/lab-57/pom.xml @@ -14,6 +14,7 @@ lab-57-user-service lab-57-hystrix-demo01 + lab-57-hystrix-dubbo-demo