SpringBoot 2.3.1 整合 Dubbo 以及 Zookeeper
环境准备: SpringBoot 2.3.1 Docker Zookeeper
一 、使用Docker下载Zookeeper
docker pull zookeeper
二 、启动刚刚我们下载好的Zookeeper
#--name:自定义容器名字
# -p 注意zookeeper有三个端口(这里我们只需要暴露出2181端口即可)
# 2181:对cline端提供服务
# 3888:选举leader使用
# 2888:集群内机器通讯使用(Leader监听此端口)
#--restart always 表示只要容器退出,则Docker将自动重启该容器
# -d 表示该容器在后台运行
docker run --name myzookeeper01 -p 2181:2181 --restart always -d zookeeper
三、创建项目
首先在这里选择Empty Poject
然后在空工程里添加新的 Model ,首先我们选择Spring Initializr
然后创建provider-ticket(提供者)
同样是添加新的 Model ,选择Spring Initializr创建consumer-user(消费者)
三、导入相关依赖
这里需要注意的是,因为我用的是SpringBoot2.3.1版本,与SpringBoot1.x版本不一样,还是存在一些差异的
我们先修改provider-ticket的依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--这里是新增需要的依赖 -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>4.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.7</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.14</version>
</dependency>
</dependencies>
修改provider-ticket模块的pom.xml
# 配置服务名称
spring:
application:
name: provider-ticket
# 连接我们刚刚下好的启动了的zookeeper ip换成你的Linux的ip即可
dubbo:
registry:
address: zookeeper://192.168.0.113:2181
#记住timeout一定要加进去不然会报错
timeout: 10000
# 这里放入我们要准备注册的组件的包名
scan:
base-packages: com.atguigu.providerticket.service
编写Service
编写ServiceImpl
编写controller
添加在Applicaiton上面@EnableDubbo注解
修改consumer-user的依赖
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>4.2.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.curator/curator-recipes -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.7</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.14</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 去除对默认日志的依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<!-- 去除对默认日志的依赖 -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
在这里插入代码片
修改consumer-user的application.properties文件
spring.application.name=consumer-user
dubbo.registry.address=zookeeper://192.168.0.113:2181
dubbo.registry.timeout=10000
server.port=18081
编写consumer-user的Service
编写consumer-user的controller
接下来将我们provider-ticket中的service拿过来放在ConsumerUserApplication所在包下
1)、先启动provider-ticket然后再启动consumer-user
2)、访问:localhost:18081/buy?name=张三
访问成功!OK