Spring Boot学习之集成Dubbo+Zookeeper小案例 旧城等待, 2024-03-27 10:38 19阅读 0赞 #### 文章目录 #### * 一 框架搭建 * * 1. \[Dubbo+zookeeper下载和安装\](https://blog.csdn.net/yang2330648064/article/details/128790320) * 二 项目创建 * * 2.1 服务者部分 * 2.2 消费者部分 * 2.3 注意点 * * 2.3.1 在service的实现类中配置服务注解,发布服务!注意导包问 * 2.3.2 服务接口的获取 * 2.4 测试步骤及效果 ## 一 框架搭建 ## ### 1. [Dubbo+zookeeper下载和安装][Dubbo_zookeeper] ### ## 二 项目创建 ## ### 2.1 服务者部分 ### 1. IDEA创建一个空项目; 2. 创建一个springBoot模块【选择Spring web依赖即可】,实现服务提供者:provider-server 【卖票的服务】 * 添加相关依赖 <!--导入依赖zookeeper+dubbo--> <!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-spring-boot-starter --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.7.8</version> </dependency> <!--zkClient--> <!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient --> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>0.1</version> </dependency> <!-- 引入zookeeper --> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>2.12.0</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>2.12.0</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.14</version> <!--排除这个slf4j-log4j12--> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency> * 编写接口 ![在这里插入图片描述][2dfb1cf37c6d4231a105b8f60e4e155c.png] /** * @author 缘友一世 * date 2023/1/30-7:55 */ public interface TicketService { String getTicket(); } * 编写实现类 import org.apache.dubbo.config.annotation.Service; import org.springframework.stereotype.Component; /** * @author 缘友一世 * date 2023/1/30-7:56 */ //zookeeper:服务注册与发现 @Component //使用dubbo后使用Service注解要注意是哪个包下的 @Service //保证一启动项目就自动注册到注册中心 public class TicketServiceImpl implements TicketService{ @Override public String getTicket() { return "1号车厢01座位"; } } * 编写配置文件 server.port=8081 #服务应用程序 dubbo.application.name=provider-serve #注册中心地址 dubbo.registry.address=zookeeper://127.0.0.1:2181 #注册服务 dubbo.scan.base-packages=com.yang.service ### 2.2 消费者部分 ### 1. IDEA创建一个空项目; 2. 创建一个springBoot模块【选择Spring web依赖即可】,实现服务消费者:consumer-server 【买票的服务】 * 添加相关依赖 <!--导入依赖zookeeper+dubbo--> <!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-spring-boot-starter --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.7.8</version> </dependency> <!--zkClient--> <!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient --> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>0.1</version> </dependency> <!-- 引入zookeeper --> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>2.12.0</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>2.12.0</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.14</version> <!--排除这个slf4j-log4j12--> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency> - 编写UserService类【消费者的服务类】 ![在这里插入图片描述](https://image.dandelioncloud.cn/pgy_files/images/2024/03/27/cd1ac1b3bb154184bf16ab0f27d3f51a.png) /** * @author 缘友一世 * date 2023/1/30-8:01 */ @Service //放到容器中 public class UserService { //获取provider-service提供的票,从注册中心拿到服务 @Reference //引用,Pom坐标,可以定义路径相同的接口名 真实项目并不会这样做 TicketService ticketService; public void butTicket() { String ticket = ticketService.getTicket(); System.out.println("在注册中心拿到了"+ticket); } } ### 2.3 注意点 ### #### 2.3.1 在service的实现类中配置服务注解,发布服务!注意导包问 #### import org.apache.dubbo.config.annotation.Service; import org.springframework.stereotype.Component; /** * @author 缘友一世 * date 2023/1/30-7:56 */ //zookeeper:服务注册与发现 @Component //使用dubbo后使用Service注解要注意是哪个包下的 @Service //保证一启动项目就自动注册到注册中心 public class TicketServiceImpl implements TicketService{ @Override public String getTicket() { return "1号车厢01座位"; } } #### 2.3.2 服务接口的获取 #### * 本来正常步骤是需要将服务提供者的接口打包,然后用pom文件导入,我们这里使用简单的方式,直接将服务的接口拿过来,路径必须保证正确,即和服务提供者相同; ![在这里插入图片描述][dd7ff63907d94166aacfca19c9cce9be.png] ### 2.4 测试步骤及效果 ### 1. 开启zookeeper【双击运行bin\\下zkServer.cmd】 2. 运行dubbo-adming【打开终端进入`dubbo-admin-master-0.2.0\dubbo-admin\target`目录下,执行命令`java -jar dubbo-admin-0.0.1-SNAPSHOT.jar`】 3. 运行`provider-server` 4. 编写在`consumer-serve`项目编写test测试代码,并运行 import com.yang.service.UserService; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest class ConsumerServeApplicationTests { @Autowired UserService userService; @Test void contextLoads() { userService.butTicket(); } } 5. 测试效果 * 终端 ![在这里插入图片描述][d6046771d2fa4970891de5415f8f76ea.png] * 监控中心 ![在这里插入图片描述][88c10ae78ed044099df9a54e7294e22e.png] ![在这里插入图片描述][f35311c527f0430380fb799440a2ec30.png] [Dubbo_zookeeper]: https://blog.csdn.net/yang2330648064/article/details/128790320 [2dfb1cf37c6d4231a105b8f60e4e155c.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/27/6efcbde397ae4b82871edfd5ff3ee1c9.png [dd7ff63907d94166aacfca19c9cce9be.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/27/cd1ac1b3bb154184bf16ab0f27d3f51a.png [d6046771d2fa4970891de5415f8f76ea.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/27/e9af9f7d76734a63a290203cb0bc5653.png [88c10ae78ed044099df9a54e7294e22e.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/27/71d35d57c98a41e39155a1bb3fa00dd2.png [f35311c527f0430380fb799440a2ec30.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/27/cae87c4499554db59ef9d710e32c0c42.png
还没有评论,来说两句吧...