当前位置:   article > 正文

springboot集成dubbo+zookeeper简单搭建(细到你没有感觉)_springboot集成zookeeper

springboot集成zookeeper

dubbo搭建过程中,请注意各依赖版本号,如果不知道版本对应,请跟下文保持一致,否则可能出现冲突,在你看到此文章之前,请确保你的zookeeper已经搭建完毕

1.创建项目

1.创建根(root)项目

选择maven,你也可以选择spirng initializr创建 

我的父工程的名字是 dubbo_ex 根据自己的需要更改即可

创建完成之后,会得到一个只有src目录的项目,删除src(父工程不需要写代码)

pom中需要注意的注释,已经在下面代码中进行注释

给小白提一嘴:统一的包管理,<abc>1.2.3</abc>,这种标签是自定义的,不是什么标准,可以等于EL表达式的取值方式(可能是我太菜了,刚学maven,认为这种有固定的写法)

pom.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <!-- 此处是springboot的父工程,用于指定springboot 版本 -->
  7. <parent>
  8. <groupId>org.springframework.boot</groupId>
  9. <artifactId>spring-boot-starter-parent</artifactId>
  10. <version>2.3.12.RELEASE</version>
  11. <relativePath/> <!-- lookup parent from repository -->
  12. </parent>
  13. <groupId>com.fmh</groupId>
  14. <artifactId>dubbo_ex</artifactId>
  15. <packaging>pom</packaging>
  16. <version>1.0-SNAPSHOT</version>
  17. <!-- 此处无需手动添加,创建模块时会自动加入,如果创建完所有模块,此处没有自动加入,需要手动加入子模块名称-->
  18. <modules>
  19. <module>dubbo-api</module>
  20. <module>procedure</module>
  21. <module>consumer</module>
  22. </modules>
  23. <!-- 统一版本管理 -->
  24. <properties>
  25. <maven.compiler.source>8</maven.compiler.source>
  26. <maven.compiler.target>8</maven.compiler.target>
  27. <java.version>1.8</java.version>
  28. <zk.version>3.6.2</zk.version>
  29. <dubbo.version>2.7.7</dubbo.version>
  30. <curator.framework.version>5.1.0</curator.framework.version>
  31. <curator.recipes.version>5.1.0</curator.recipes.version>
  32. </properties>
  33. <dependencyManagement>
  34. <dependencies>
  35. <dependency>
  36. <groupId>org.apache.dubbo</groupId>
  37. <artifactId>dubbo-spring-boot-starter</artifactId>
  38. <version>${dubbo.version}</version>
  39. </dependency>
  40. <dependency>
  41. <groupId>org.apache.zookeeper</groupId>
  42. <artifactId>zookeeper</artifactId>
  43. <version>${zk.version}</version>
  44. </dependency>
  45. <dependency>
  46. <groupId>org.apache.curator</groupId>
  47. <artifactId>curator-framework</artifactId>
  48. <version>${curator.framework.version}</version>
  49. </dependency>
  50. <dependency>
  51. <groupId>org.apache.curator</groupId>
  52. <artifactId>curator-recipes</artifactId>
  53. <version>${curator.recipes.version}</version>
  54. </dependency>
  55. </dependencies>
  56. </dependencyManagement>
  57. </project>

2.创建模块

此处你也可以选择spring init,我们选择maven工程

注意此处截图圈红的位置

 pom.xml (该pom什么也没改变,该模块无需添加dubbo等依赖)

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <parent>
  6. <artifactId>dubbo_ex</artifactId>
  7. <groupId>com.fmh</groupId>
  8. <version>1.0-SNAPSHOT</version>
  9. </parent>
  10. <modelVersion>4.0.0</modelVersion>
  11. <artifactId>dubbo-api</artifactId>
  12. <properties>
  13. <maven.compiler.source>8</maven.compiler.source>
  14. <maven.compiler.target>8</maven.compiler.target>
  15. </properties>
  16. </project>

 我们在刚刚创建的模块中,随意写一个接口,如下图:

3.创建消费者 

 创建步骤跟第二步一样的步骤,不再演示,名字随意

pom.xml

你的pom文件需要修改一下引入的第二步创建的模块,下面代码中已经给出了注释,我们的名字不同

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <parent>
  6. <artifactId>dubbo_ex</artifactId>
  7. <groupId>com.fmh</groupId>
  8. <version>1.0-SNAPSHOT</version>
  9. </parent>
  10. <modelVersion>4.0.0</modelVersion>
  11. <artifactId>procedure</artifactId>
  12. <properties>
  13. <maven.compiler.source>8</maven.compiler.source>
  14. <maven.compiler.target>8</maven.compiler.target>
  15. </properties>
  16. <dependencies>
  17. <dependency>
  18. <groupId>org.springframework.boot</groupId>
  19. <artifactId>spring-boot-starter-web</artifactId>
  20. </dependency>
  21. <dependency>
  22. <groupId>org.springframework.boot</groupId>
  23. <artifactId>spring-boot-starter</artifactId>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.apache.zookeeper</groupId>
  27. <artifactId>zookeeper</artifactId>
  28. </dependency>
  29. <!-- https://mvnrepository.com/artifact/org.apache.curator/curator-framework -->
  30. <!-- zookeeper和dubbo的集成包 -->
  31. <dependency>
  32. <groupId>org.apache.curator</groupId>
  33. <artifactId>curator-framework</artifactId>
  34. </dependency>
  35. <!-- zookeeper和dubbo的集成包 -->
  36. <dependency>
  37. <groupId>org.apache.curator</groupId>
  38. <artifactId>curator-recipes</artifactId>
  39. </dependency>
  40. <!-- 刚刚创建的api接口模块 -->
  41. <dependency>
  42. <groupId>com.fmh</groupId>
  43. <artifactId>dubbo-api</artifactId>
  44. <version>1.0-SNAPSHOT</version>
  45. </dependency>
  46. <dependency>
  47. <groupId>org.apache.dubbo</groupId>
  48. <artifactId>dubbo-spring-boot-starter</artifactId>
  49. </dependency>
  50. </dependencies>
  51. </project>

 application.properties

  1. server.port=8082
  2. ## 注册中心 zookeeper的地址
  3. dubbo.registry.address=zookeeper://127.0.0.1:2181
  4. dubbo.application.name=provider-ticker
  5. # dubbo扫描的包
  6. dubbo.scan.base-packages=com.fmh.service
  7. dubbo.registry.timeout=20000
  8. dubbo.protocol.name=dubbo
  9. dubbo.protocol.port=20880

 实现接口,注意导入的包(@Component可以替换为@Service,不过要注意引入的包是否是spring的)

  1. @Component
  2. @DubboService(version = "1.0")
  3. public class UserServiceImpl implements UserService {
  4. @Override
  5. public String hello(String str) {
  6. return str;
  7. }
  8. }

springboot启动类

 这个代码就不给出了

至此,服务提供者创建完毕

4.消费者模块创建

跟 2小节一样的步骤

pom.xml

注意引入自己的模块

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <parent>
  6. <artifactId>dubbo_ex</artifactId>
  7. <groupId>com.fmh</groupId>
  8. <version>1.0-SNAPSHOT</version>
  9. </parent>
  10. <modelVersion>4.0.0</modelVersion>
  11. <artifactId>consumer</artifactId>
  12. <properties>
  13. <maven.compiler.source>8</maven.compiler.source>
  14. <maven.compiler.target>8</maven.compiler.target>
  15. </properties>
  16. <dependencies>
  17. <dependency>
  18. <groupId>com.fmh</groupId>
  19. <artifactId>dubbo-api</artifactId>
  20. <version>1.0-SNAPSHOT</version>
  21. </dependency>
  22. <dependency>
  23. <groupId>org.apache.dubbo</groupId>
  24. <artifactId>dubbo-spring-boot-starter</artifactId>
  25. </dependency>
  26. <dependency>
  27. <groupId>org.springframework.boot</groupId>
  28. <artifactId>spring-boot-starter</artifactId>
  29. </dependency>
  30. <dependency>
  31. <groupId>org.apache.curator</groupId>
  32. <artifactId>curator-framework</artifactId>
  33. </dependency>
  34. <dependency>
  35. <groupId>org.apache.curator</groupId>
  36. <artifactId>curator-recipes</artifactId>
  37. </dependency>
  38. <dependency>
  39. <groupId>org.apache.zookeeper</groupId>
  40. <artifactId>zookeeper</artifactId>
  41. </dependency>
  42. <dependency>
  43. <groupId>org.springframework.boot</groupId>
  44. <artifactId>spring-boot-starter-web</artifactId>
  45. </dependency>
  46. </dependencies>
  47. </project>

application.properties 配置文件

  1. server.port=8083
  2. dubbo.registry.address=zookeeper://127.0.0.1:2181
  3. dubbo.application.name=provider-consumer
  4. dubbo.scan.base-packages=com.fmh.controller
  5. dubbo.registry.timeout=20000
  6. dubbo.protocol.name=dubbo-consumer
  7. dubbo.protocol.port=20881

创建controller

  1. @RestController
  2. public class UserController {
  3. @DubboReference(version = "1.0")
  4. private UserService userService;
  5. @GetMapping("/user")
  6. public String user() {
  7. return userService.hello("只因你太美");
  8. }
  9. }

创建springboot启动类(这个代码就不需要了吧,上面有给出哦)

然后启动项目

这个提示不用管,是因为zk或者dubbo没有排除log4j的组件,不影响 

用postman调用接口,即可看到结果

另外 dubbo-admin可以可视化看到接口注册情况,看反馈情况决定是否更新,感谢您的阅读!

如果有问题,欢迎留言 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/53984
推荐阅读
相关标签
  

闽ICP备14008679号