一、 新建项目

1 建父工程
image.png
2 建生产者和消费者
image.png

二、代码整合

1 父工程依赖管理

  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. <groupId>com.flame</groupId>
  7. <artifactId>demo-base</artifactId>
  8. <version>1.0-SNAPSHOT</version>
  9. <modules>
  10. <module>service-api</module>
  11. <module>service-provider</module>
  12. <module>service-consumer</module>
  13. </modules>
  14. <packaging>pom</packaging>
  15. <properties>
  16. <dubbo.version>3.0.2.1</dubbo.version>
  17. </properties>
  18. <dependencies>
  19. <!-- 日志配置 -->
  20. <dependency>
  21. <groupId>log4j</groupId>
  22. <artifactId>log4j</artifactId>
  23. <version>1.2.16</version>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.slf4j</groupId>
  27. <artifactId>slf4j-api</artifactId>
  28. <version>1.7.5</version>
  29. </dependency>
  30. <dependency>
  31. <groupId>org.slf4j</groupId>
  32. <artifactId>slf4j-log4j12</artifactId>
  33. <version>1.7.5</version>
  34. </dependency>
  35. <!-- json数据化转换 -->
  36. <dependency>
  37. <groupId>com.alibaba</groupId>
  38. <artifactId>fastjson</artifactId>
  39. <version>1.2.62</version>
  40. </dependency>
  41. </dependencies>
  42. <dependencyManagement>
  43. <dependencies>
  44. <dependency>
  45. <groupId>org.apache.dubbo</groupId>
  46. <artifactId>dubbo</artifactId>
  47. <version>${dubbo.version}</version>
  48. </dependency>
  49. <dependency>
  50. <groupId>org.apache.dubbo</groupId>
  51. <artifactId>dubbo-common</artifactId>
  52. <version>2.7.9-SNAPSHOT</version>
  53. </dependency>
  54. <dependency>
  55. <groupId>org.apache.dubbo</groupId>
  56. <artifactId>dubbo-registry-zookeeper</artifactId>
  57. <version>${dubbo.version}</version>
  58. <exclusions>
  59. <exclusion>
  60. <groupId>org.apache.dubbo</groupId>
  61. <artifactId>dubbo-remoting-api</artifactId>
  62. </exclusion>
  63. <exclusion>
  64. <groupId>org.apache.dubbo</groupId>
  65. <artifactId>dubbo-common</artifactId>
  66. </exclusion>
  67. </exclusions>
  68. </dependency>
  69. <dependency>
  70. <groupId>org.apache.dubbo</groupId>
  71. <artifactId>dubbo-registry-nacos</artifactId>
  72. <version>3.0.2.1</version>
  73. </dependency>
  74. <dependency>
  75. <groupId>org.apache.dubbo</groupId>
  76. <artifactId>dubbo-rpc-dubbo</artifactId>
  77. <version>${dubbo.version}</version>
  78. <exclusions>
  79. <exclusion>
  80. <groupId>org.apache.dubbo</groupId>
  81. <artifactId>dubbo-remoting-api</artifactId>
  82. </exclusion>
  83. <exclusion>
  84. <groupId>org.apache.dubbo</groupId>
  85. <artifactId>dubbo-common</artifactId>
  86. </exclusion>
  87. </exclusions>
  88. </dependency>
  89. <dependency>
  90. <groupId>org.apache.dubbo</groupId>
  91. <artifactId>dubbo-remoting-netty4</artifactId>
  92. <version>${dubbo.version}</version>
  93. <exclusions>
  94. <exclusion>
  95. <groupId>org.apache.dubbo</groupId>
  96. <artifactId>dubbo-remoting-api</artifactId>
  97. </exclusion>
  98. </exclusions>
  99. </dependency>
  100. <dependency>
  101. <groupId>org.apache.dubbo</groupId>
  102. <artifactId>dubbo-serialization-hessian2</artifactId>
  103. <version>${dubbo.version}</version>
  104. <exclusions>
  105. <exclusion>
  106. <groupId>org.apache.dubbo</groupId>
  107. <artifactId>dubbo-common</artifactId>
  108. </exclusion>
  109. </exclusions>
  110. </dependency>
  111. </dependencies>
  112. </dependencyManagement>
  113. <build>
  114. <plugins>
  115. <plugin>
  116. <groupId>org.apache.maven.plugins</groupId>
  117. <artifactId>maven-compiler-plugin</artifactId>
  118. <version>3.3</version>
  119. <configuration>
  120. <source>1.8</source>
  121. <target>1.8</target>
  122. </configuration>
  123. </plugin>
  124. </plugins>
  125. </build>
  126. </project>

2 编写API

image.png

3 provider

1依赖

  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>demo-base</artifactId>
  7. <groupId>com.flame</groupId>
  8. <version>1.0-SNAPSHOT</version>
  9. </parent>
  10. <modelVersion>4.0.0</modelVersion>
  11. <artifactId>service-provider</artifactId>
  12. <dependencies>
  13. <dependency>
  14. <groupId>com.flame</groupId>
  15. <artifactId>service-api</artifactId>
  16. <version>1.0-SNAPSHOT</version>
  17. </dependency>
  18. <dependency>
  19. <groupId>org.apache.curator</groupId>
  20. <artifactId>curator-recipes</artifactId>
  21. <version>4.0.1</version>
  22. </dependency>
  23. <dependency>
  24. <groupId>org.apache.dubbo</groupId>
  25. <artifactId>dubbo</artifactId>
  26. </dependency>
  27. <dependency>
  28. <groupId>org.apache.curator</groupId>
  29. <artifactId>curator-recipes</artifactId>
  30. <version>4.2.0</version>
  31. </dependency>
  32. <dependency>
  33. <groupId>org.apache.dubbo</groupId>
  34. <artifactId>dubbo-registry-zookeeper</artifactId>
  35. </dependency>
  36. <dependency>
  37. <groupId>org.apache.dubbo</groupId>
  38. <artifactId>dubbo-rpc-dubbo</artifactId>
  39. </dependency>
  40. <dependency>
  41. <groupId>org.apache.dubbo</groupId>
  42. <artifactId>dubbo-remoting-netty4</artifactId>
  43. </dependency>
  44. <dependency>
  45. <groupId>org.apache.dubbo</groupId>
  46. <artifactId>dubbo-serialization-hessian2</artifactId>
  47. </dependency>
  48. </dependencies>
  49. </project>

2 配置

image.png

  1. dubbo.application.name=service-provider
  2. dubbo.protocol.name=dubbo
  3. dubbo.protocol.port=20882
  1. log4j.rootCategory=INFO,CONSOLE
  2. log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
  3. log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
  4. log4j.appender.CONSOLE.layout.ConversionPattern=%d{HH:mm:ss.SSS} [%t] %-5p %c.%M\(%F:%L\) - %m%n

3 服务提供实现类

image.png

4 配置 和容器启动类

System.in.read(); 防止系统退出

image.png

4 Consumer

1 依赖

  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>demo-base</artifactId>
  7. <groupId>com.flame</groupId>
  8. <version>1.0-SNAPSHOT</version>
  9. </parent>
  10. <modelVersion>4.0.0</modelVersion>
  11. <artifactId>service-consumer</artifactId>
  12. <dependencies>
  13. <dependency>
  14. <groupId>com.flame</groupId>
  15. <artifactId>service-api</artifactId>
  16. <version>1.0-SNAPSHOT</version>
  17. </dependency>
  18. <dependency>
  19. <groupId>org.apache.curator</groupId>
  20. <artifactId>curator-recipes</artifactId>
  21. <version>4.0.1</version>
  22. </dependency>
  23. <dependency>
  24. <groupId>org.projectlombok</groupId>
  25. <artifactId>lombok</artifactId>
  26. <version>1.18.20</version>
  27. </dependency>
  28. <dependency>
  29. <groupId>org.apache.dubbo</groupId>
  30. <artifactId>dubbo</artifactId>
  31. </dependency>
  32. <dependency>
  33. <groupId>org.apache.curator</groupId>
  34. <artifactId>curator-recipes</artifactId>
  35. <version>4.2.0</version>
  36. </dependency>
  37. <dependency>
  38. <groupId>org.apache.dubbo</groupId>
  39. <artifactId>dubbo-registry-zookeeper</artifactId>
  40. </dependency>
  41. <dependency>
  42. <groupId>org.apache.dubbo</groupId>
  43. <artifactId>dubbo-rpc-dubbo</artifactId>
  44. </dependency>
  45. <dependency>
  46. <groupId>org.apache.dubbo</groupId>
  47. <artifactId>dubbo-remoting-netty4</artifactId>
  48. </dependency>
  49. <dependency>
  50. <groupId>org.apache.dubbo</groupId>
  51. <artifactId>dubbo-serialization-hessian2</artifactId>
  52. </dependency>
  53. </dependencies>
  54. </project>

2 配置

image.png

  1. dubbo.application.name=service-consumer
  2. dubbo.registry.address=zookeeper://127.0.0.1:2181
  3. dubbo.metadata-report.address=zookeeper://127.0.0.1:2181
  1. log4j.rootCategory=INFO,CONSOLE
  2. log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
  3. log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
  4. log4j.appender.CONSOLE.layout.ConversionPattern=%d{HH:mm:ss.SSS} [%t] %-5p %c.%M\(%F:%L\) - %m%n

3 消费者调用类

image.png

4 配置和容器启动类

image.png

5 需要依赖组册中心

image.png

6 test

image.png