Skip to content

Commit e0a315b

Browse files
author
YunaiV
committed
增加 Dubbo + Hystrix 入门示例
1 parent 5d46285 commit e0a315b

File tree

11 files changed

+114
-111
lines changed

11 files changed

+114
-111
lines changed

lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-application/pom.xml

+27-29
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,8 @@
1515
<maven.compiler.target>1.8</maven.compiler.target>
1616
<maven.compiler.source>1.8</maven.compiler.source>
1717
<spring.boot.version>2.2.4.RELEASE</spring.boot.version>
18-
<spring.cloud.version>Hoxton.SR1</spring.cloud.version>
19-
<spring.cloud.alibaba.version>2.2.0.RELEASE</spring.cloud.alibaba.version>
2018
</properties>
2119

22-
<!--
23-
引入 Spring Boot、Spring Cloud、Spring Cloud Alibaba 三者 BOM 文件,进行依赖版本的管理,防止不兼容。
24-
在 https://dwz.cn/mcLIfNKt 文章中,Spring Cloud Alibaba 开发团队推荐了三者的依赖关系
25-
-->
2620
<dependencyManagement>
2721
<dependencies>
2822
<dependency>
@@ -32,20 +26,6 @@
3226
<type>pom</type>
3327
<scope>import</scope>
3428
</dependency>
35-
<dependency>
36-
<groupId>org.springframework.cloud</groupId>
37-
<artifactId>spring-cloud-dependencies</artifactId>
38-
<version>${spring.cloud.version}</version>
39-
<type>pom</type>
40-
<scope>import</scope>
41-
</dependency>
42-
<dependency>
43-
<groupId>com.alibaba.cloud</groupId>
44-
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
45-
<version>${spring.cloud.alibaba.version}</version>
46-
<type>pom</type>
47-
<scope>import</scope>
48-
</dependency>
4929
</dependencies>
5030
</dependencyManagement>
5131

@@ -63,22 +43,40 @@
6343
<artifactId>spring-boot-starter-web</artifactId>
6444
</dependency>
6545

66-
<!-- 引入 Spring Cloud Alibaba Nacos Discovery 相关依赖,将 Nacos 作为注册中心,并实现对其的自动配置 -->
46+
<!-- 实现对 Dubbo 的自动化配置 -->
47+
<dependency>
48+
<groupId>org.apache.dubbo</groupId>
49+
<artifactId>dubbo</artifactId>
50+
<version>2.7.4.1</version>
51+
</dependency>
6752
<dependency>
68-
<groupId>com.alibaba.cloud</groupId>
69-
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
53+
<groupId>org.apache.dubbo</groupId>
54+
<artifactId>dubbo-spring-boot-starter</artifactId>
55+
<version>2.7.4.1</version>
7056
</dependency>
7157

72-
<!-- 引入 Spring Cloud Alibaba Dubbo 相关依赖,实现呢 Dubbo 进行远程调用,并实现对其的自动配置 -->
58+
<!-- 使用 Nacos 作为注册中心 -->
7359
<dependency>
74-
<groupId>com.alibaba.cloud</groupId>
75-
<artifactId>spring-cloud-starter-dubbo</artifactId>
60+
<groupId>com.alibaba.nacos</groupId>
61+
<artifactId>nacos-client</artifactId>
62+
<version>1.2.1</version>
63+
</dependency>
64+
<dependency>
65+
<groupId>org.apache.dubbo</groupId>
66+
<artifactId>dubbo-registry-nacos</artifactId>
67+
<version>2.7.4.1</version>
7668
</dependency>
7769

78-
<!-- 引入 Spring Cloud Netflix Hystrix 相关依赖,将 Hystrix 作为服务保障组件,并实现对其的自动配置 -->
70+
<!-- 引入 Hystrix 依赖 -->
71+
<dependency>
72+
<groupId>com.netflix.hystrix</groupId>
73+
<artifactId>hystrix-core</artifactId>
74+
<version>1.5.18</version>
75+
</dependency>
7976
<dependency>
80-
<groupId>org.springframework.cloud</groupId>
81-
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
77+
<groupId>com.netflix.hystrix</groupId>
78+
<artifactId>hystrix-javanica</artifactId>
79+
<version>1.5.18</version>
8280
</dependency>
8381
</dependencies>
8482

lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-application/src/main/java/cn/iocoder/springcloud/labx23/demo/DemoApplication.java

-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@
22

33
import org.springframework.boot.SpringApplication;
44
import org.springframework.boot.autoconfigure.SpringBootApplication;
5-
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
65

76
@SpringBootApplication
8-
@EnableCircuitBreaker // 声明开启断路器
97
public class DemoApplication {
108

119
public static void main(String[] args) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package cn.iocoder.springcloud.labx23.demo.config;
2+
3+
import com.netflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect;
4+
import org.springframework.context.annotation.Bean;
5+
import org.springframework.context.annotation.Configuration;
6+
import org.springframework.context.annotation.EnableAspectJAutoProxy;
7+
8+
@Configuration
9+
@EnableAspectJAutoProxy // 开启 AOP 代理的支持
10+
public class HystrixConfig {
11+
12+
@Bean
13+
public HystrixCommandAspect hystrixCommandAspect() {
14+
return new HystrixCommandAspect();
15+
}
16+
17+
}

lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-application/src/main/java/cn/iocoder/springcloud/labx23/demo/controller/DemoController.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package cn.iocoder.springcloud.labx23.demo.controller;
22

3-
import cn.iocoder.springcloud.labx23.userservice.api.UserService;
3+
import cn.iocoder.springboot.lab57.userservice.api.UserService;
44
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
5-
import org.apache.commons.lang.exception.ExceptionUtils;
5+
import org.apache.commons.lang3.exception.ExceptionUtils;
66
import org.apache.dubbo.config.annotation.Reference;
77
import org.slf4j.Logger;
88
import org.slf4j.LoggerFactory;
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
1-
spring:
2-
application:
3-
name: demo-consumer
4-
cloud:
5-
# Nacos 作为注册中心的配置项
6-
nacos:
7-
discovery:
8-
server-addr: 127.0.0.1:8848
9-
10-
# Dubbo 配置项,对应 DubboConfigurationProperties 类
1+
# dubbo 配置项,对应 DubboConfigurationProperties 配置类
112
dubbo:
12-
# Dubbo 服务注册中心配置,对应 RegistryConfig 类
3+
# Dubbo 应用配置
4+
application:
5+
name: demo-consumer # 应用名
6+
# Dubbo 注册中心配置
137
registry:
14-
address: spring-cloud://127.0.0.1:8848 # 指定 Dubbo 服务注册中心的地址
15-
# Spring Cloud Alibaba Dubbo 专属配置项,对应 DubboCloudProperties 类
16-
cloud:
17-
subscribed-services: user-service # 设置订阅的应用列表,默认为 * 订阅所有应用。
8+
address: nacos://127.0.0.1:8848 # 注册中心地址。个鞥多注册中心,可见 http://dubbo.apache.org/zh-cn/docs/user/references/registry/introduction.html 文档。
9+
# Dubbo 消费者配置
10+
consumer:
11+
timeout: 1000 # 【重要】远程服务调用超时时间,单位:毫秒。默认为 1000 毫秒,胖友可以根据自己业务修改
12+
UserRpcService:
13+
version: 1.0.0

lab-57/lab-57-hystrix-dubbo-demo/lab-57-hystrix-dubbo-demo-user-service/pom.xml

+24-26
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,8 @@
1515
<maven.compiler.target>1.8</maven.compiler.target>
1616
<maven.compiler.source>1.8</maven.compiler.source>
1717
<spring.boot.version>2.2.4.RELEASE</spring.boot.version>
18-
<spring.cloud.version>Hoxton.SR1</spring.cloud.version>
19-
<spring.cloud.alibaba.version>2.2.0.RELEASE</spring.cloud.alibaba.version>
2018
</properties>
2119

22-
<!--
23-
引入 Spring Boot、Spring Cloud、Spring Cloud Alibaba 三者 BOM 文件,进行依赖版本的管理,防止不兼容。
24-
在 https://dwz.cn/mcLIfNKt 文章中,Spring Cloud Alibaba 开发团队推荐了三者的依赖关系
25-
-->
2620
<dependencyManagement>
2721
<dependencies>
2822
<dependency>
@@ -32,20 +26,6 @@
3226
<type>pom</type>
3327
<scope>import</scope>
3428
</dependency>
35-
<dependency>
36-
<groupId>org.springframework.cloud</groupId>
37-
<artifactId>spring-cloud-dependencies</artifactId>
38-
<version>${spring.cloud.version}</version>
39-
<type>pom</type>
40-
<scope>import</scope>
41-
</dependency>
42-
<dependency>
43-
<groupId>com.alibaba.cloud</groupId>
44-
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
45-
<version>${spring.cloud.alibaba.version}</version>
46-
<type>pom</type>
47-
<scope>import</scope>
48-
</dependency>
4929
</dependencies>
5030
</dependencyManagement>
5131

@@ -57,16 +37,34 @@
5737
<version>1.0-SNAPSHOT</version>
5838
</dependency>
5939

60-
<!-- 引入 Spring Cloud Alibaba Nacos Discovery 相关依赖,将 Nacos 作为注册中心,并实现对其的自动配置 -->
40+
<!-- 引入 Spring Boot 依赖 -->
6141
<dependency>
62-
<groupId>com.alibaba.cloud</groupId>
63-
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
42+
<groupId>org.springframework.boot</groupId>
43+
<artifactId>spring-boot-starter</artifactId>
6444
</dependency>
6545

66-
<!-- 引入 Spring Cloud Alibaba Dubbo 相关依赖,实现呢 Dubbo 进行远程调用,并实现对其的自动配置 -->
46+
<!-- 实现对 Dubbo 的自动化配置 -->
47+
<dependency>
48+
<groupId>org.apache.dubbo</groupId>
49+
<artifactId>dubbo</artifactId>
50+
<version>2.7.4.1</version>
51+
</dependency>
52+
<dependency>
53+
<groupId>org.apache.dubbo</groupId>
54+
<artifactId>dubbo-spring-boot-starter</artifactId>
55+
<version>2.7.4.1</version>
56+
</dependency>
57+
58+
<!-- 使用 Nacos 作为注册中心 -->
59+
<dependency>
60+
<groupId>com.alibaba.nacos</groupId>
61+
<artifactId>nacos-client</artifactId>
62+
<version>1.2.1</version>
63+
</dependency>
6764
<dependency>
68-
<groupId>com.alibaba.cloud</groupId>
69-
<artifactId>spring-cloud-starter-dubbo</artifactId>
65+
<groupId>org.apache.dubbo</groupId>
66+
<artifactId>dubbo-registry-nacos</artifactId>
67+
<version>2.7.4.1</version>
7068
</dependency>
7169
</dependencies>
7270

Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package cn.iocoder.springcloud.labx23.userservice;
1+
package cn.iocoder.springboot.lab57.userservice;
22

33
import org.springframework.boot.SpringApplication;
44
import org.springframework.boot.autoconfigure.SpringBootApplication;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package cn.iocoder.springboot.lab57.userservice.service;
2+
3+
import cn.iocoder.springboot.lab57.userservice.api.UserService;
4+
5+
@org.apache.dubbo.config.annotation.Service(version = "1.0.0")
6+
public class UserServiceImpl implements UserService {
7+
8+
@Override
9+
public String getUser(Integer id) {
10+
return "User:" + id;
11+
}
12+
13+
}

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

-13
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,20 @@
1-
spring:
2-
application:
3-
name: user-service
4-
cloud:
5-
# Nacos 作为注册中心的配置项
6-
nacos:
7-
discovery:
8-
server-addr: 127.0.0.1:8848 # Nacos 服务器地址
9-
10-
# Dubbo 配置项,对应 DubboConfigurationProperties 类
1+
# dubbo 配置项,对应 DubboConfigurationProperties 配置类
112
dubbo:
12-
scan:
13-
base-packages: cn.iocoder.springcloud.labx23.userservice.service # 指定 Dubbo 服务实现类的扫描基准包
14-
# Dubbo 服务暴露的协议配置,对应 ProtocolConfig Map
15-
protocols:
16-
dubbo:
17-
name: dubbo # 协议名称
18-
port: -1 # 协议端口,-1 表示自增端口,从 20880 开始
19-
# Dubbo 服务注册中心配置,对应 RegistryConfig 类
3+
# Dubbo 应用配置
4+
application:
5+
name: user-service # 应用名
6+
# Dubbo 注册中心配
207
registry:
21-
address: spring-cloud://127.0.0.1:8848 # 指定 Dubbo 服务注册中心的地址
22-
# Spring Cloud Alibaba Dubbo 专属配置项,对应 DubboCloudProperties 类
23-
cloud:
24-
subscribed-services: '' # 设置订阅的应用列表,默认为 * 订阅所有应用。
8+
address: nacos://127.0.0.1:8848 # 注册中心地址。个鞥多注册中心,可见 http://dubbo.apache.org/zh-cn/docs/user/references/registry/introduction.html 文档。
9+
# Dubbo 服务提供者协议配置
10+
protocol:
11+
port: -1 # 协议端口。使用 -1 表示随机端口。
12+
name: dubbo # 使用 `dubbo://` 协议。更多协议,可见 http://dubbo.apache.org/zh-cn/docs/user/references/protocol/introduction.html 文档
13+
# Dubbo 服务提供者配置
14+
provider:
15+
timeout: 1000 # 【重要】远程服务调用超时时间,单位:毫秒。默认为 1000 毫秒,胖友可以根据自己业务修改
16+
UserRpcService:
17+
version: 1.0.0
18+
# 配置扫描 Dubbo 自定义的 @Service 注解,暴露成 Dubbo 服务提供者
19+
scan:
20+
base-packages: cn.iocoder.springboot.lab57.userservice.service

lab-57/lab-57-hystrix-dubbo-demo/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
44
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
55
<parent>
6-
<artifactId>labx-23</artifactId>
6+
<artifactId>lab-57</artifactId>
77
<groupId>cn.iocoder.springboot.labs</groupId>
88
<version>1.0-SNAPSHOT</version>
99
</parent>

0 commit comments

Comments
 (0)