1.在IDEA 中 创建maven 工程 dubbo-server 如下图:
下一步
next 直到创建完成
2、创建 模块 sever-api 和 server-provider
在工程上 右键 新建 Module
next
一直next 直到创建完成
工程名上右键 新建 Module
下一步
next 直到创建完成
这样完成maven工程创建 一个 父工程dubbo-server 和 两个子模块 server-api server-provider
3、server-api 中定义一个接口 IHello ,该接口就是我们要发布的服务 。如下
server-provider pom.xml 中增加对 server-api 的依赖, 如下:
<dependency>
<groupId>com.test.dubbo</groupId>
<artifactId>server-api</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
server-provider 中增加 IHello的实现类 如下:
4、provider 增加对 dubbo、zookeeper、日志 的依赖,pom.xml 中增加 如下依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.6</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.10</version>
</dependency>
5、server-provider 中增加如下目录和配置文件 dubbo.xml 为服务配置文件 log4j.properties 为日志配置文件
dubbo.xml中需要配置 配置中心 这里需要提前准备一个 zookeeper 的环境
增加启动类 Bootstrap 加载配置文件并启动服务
运行代码 日志中可以看到我们发布的服务 以及在 zookeeper·中注册的服务信息 如下图
6、服务的调用
IDEA 新建工程 dubbo-client 。创建方式同 dubbo-server. (参考第一步 client 工程下不需要建子模块)
pom.xml中增加 对 server-api、zookeeper 和 dubbo 的依赖 如下
<dependency>
<groupId>com.test.dubbo</groupId>
<artifactId>server-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.6</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.10</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
增加 服务配置文件dubbo-client.xml 如下:
声明服务的时候可以通过registry 属性 指定 从某个配置中心中获取接口地址,也可以 不配置配置中心 通过url属性直接指定接口地址如下:
<!--不使用注册中心是可以直接配置url 进行调用
<dubbo:reference id="helloService"
interface="com.test.dubbo.IHello"
url = "dubbo://192.168.26.2:20880/com.test.dubbo.IHello"/>-->
增加调用类APP 如下
执行代码 调用成功,如下:
7、服务发布使用版本号
在发布服务时可能存在同时需要多个版本的情况,这个时候只需发布、调用接口时 增加版本信息 就可以实现多版本 服务的发布和调用。
我们在server-provider中增加一个实现类 HelloImplV2 如下
配置文件增加V2版本的接口声明 然后运行 Bootstrap 注册并启动服务
dubbo-client 工程中 dubbo-client.xml 中可以通过version 属性指明要调用的版本 如下
修改完运行 App.main()执行的是版本2 的实现如下: