本案例讲解Dobbo的简单应用 。分别是配置文件和springboot集成2种方式 新建一个maven项目
确保Zookeeper运行
参考 Zookeeper 安装 因为Dubbo 需要依赖Zookeeper可以本地安装 或者开虚拟机中的Zookeeper
架构图
XML配置 Demo
创建项目
- 创建一个maven父项目 然后创建3个子Module的 maven 项目
- maven父项目 删除src 用不上,然后修改packing
<packaging>pom</packaging>
- api 中写一个接口 提供api功能 我感觉就是摆设 😄 不需创建都行
- server 中要实现 api的接口 提供实现功能
- client 中需要调用 server的api功能。至于怎么获取 就是rpc了
添加Dubbo依赖
在 server 和 client 中添加依赖
添加api依赖
dependencyManagement 在父Maven中管理版本控制
在 父项目中 pom.xml
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.wpp.demo</groupId>
<artifactId>demo-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</dependencyManagement>
在 client 和 server 中
<dependencies>
<dependency>
<groupId>com.wpp.demo</groupId>
<artifactId>demo-api</artifactId>
</dependency>
</dependencies>
添加dubbo依赖
参考 github网站 添加依赖
配置方式和 api配置一样就行 父项目进行版本控制 然后子项目直接依赖
<properties>
<dubbo.version>3.0.7</dubbo.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>${dubbo.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-dependencies-zookeeper</artifactId>
<version>${dubbo.version}</version>
<type>pom</type>
</dependency>
</dependencies>
编写逻辑
api 提供 接口
server 实现 和 启动服务 注册服务
- 实现
- xml 配置 注册服务 provider.xml 的配置
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://dubbo.apache.org/schema/dubbo https://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<!--1 配置应用名字: 方便应用的监控管理-->
<dubbo:application name="demo-provider"/>
<!--2 配置注册中心的地址-->
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>
<!--3 配置通信的协议和通信端口-->
<dubbo:protocol name="dubbo" port="20890"/>
<!--4 配置提供服务的Bean对象-->
<bean id="demoService" class="com.wpp.demo.HelloServiceImpl"/>
<!--5 申明提供的服务 -->
<dubbo:service interface="com.wpp.demo.IHelloService" ref="demoService"/>
</beans>
- 启动服务 创建一个类 main方法启动
启动后 会注册 Zookeeper
client 调用
- 订阅
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://dubbo.apache.org/schema/dubbo https://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<!--1 配置应用名称-->
<dubbo:application name="demo-consumer"/>
<!--2 配置注册中心 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>
<!--3 引入服务-->
<dubbo:reference id="demoService" check="false" interface="com.wpp.demo.IHelloService"/>
</beans>
-
发送远程调用
-
相应数据
xml配置
provider.xml
就是server 配置
- 在resources 下面创建一个xml文件 参考# XML 配置
这里把http 改成https 【dubbo.apache.org/schema/dubb… 然后端口 20890 和 老师demo 不一样 但是感觉没啥问题 😄 大胆尝试
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://dubbo.apache.org/schema/dubbo https://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<!--1 配置应用名字: 方便应用的监控管理-->
<dubbo:application name="demo-provider"/>
<!--2 配置注册中心的地址-->
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>
<!--3 配置通信的协议和通信端口-->
<dubbo:protocol name="dubbo" port="20890"/>
<!--4 配置提供服务的Bean对象-->
<bean id="demoService" class="com.wpp.demo.HelloServiceImpl"/>
<!--5 申明提供的服务 -->
<dubbo:service interface="com.wpp.demo.IHelloService" ref="demoService"/>
</beans>
consumer.xml
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://dubbo.apache.org/schema/dubbo https://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<!--1 配置应用名称-->
<dubbo:application name="demo-consumer"/>
<!--2 配置注册中心 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>
<!--3 引入服务-->
<dubbo:reference id="demoService" check="false" interface="com.wpp.demo.IHelloService"/>
</beans>
注解配置 Demo
配置
server client 保持基本一致
- 属性配置
<spring-boot.version>2.6.7</spring-boot.version>
<dubbo.version>2.7.8</dubbo.version>
- dependencyManagement
<dependencyManagement>
<dependencies>
<!-- Spring Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- Apache Dubbo -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-dependencies-bom</artifactId>
<version>${dubbo.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
- 依赖
<!-- Dubbo Spring Boot Starter -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.8</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-dependencies-zookeeper</artifactId>
<version>${dubbo.version}</version>
<type>pom</type>
</dependency>
server client
application.properties
server
server.port=7100
# dubbo-provider.properties
dubbo.application.name=annotation-provider
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
dubbo.scan.base-packages=com.wpp.demo
client
server.port=7101
dubbo.application.name=annotation-consumer
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.consumer.timeout=3000
注意点
@Service
别忘记了 @Service