Dubbo 是阿里巴巴开源的基于 Java 的高性能 RPC 框架,本文介绍 Spring Boot 集成 Dubbo 的开发过程。
注意:
注册中心使用zookeeper,自行搭建,本文zk地址为localhost:2181。
本文使用的springboot版本为2.0.5,低版本有可能报错。
dubbo的start项目为dubbo-spring-boot-starter,可以进行依赖。
一个简单的dubbo分布式项目可以保护生产者(provider),消费者(consumer)和api定义项目。
Api项目
首先进行接口的定义,创建 46-spring-boot-dubbo-api 项目,pom内容如下:

可以看到是一个很简单的项目,没有进行任何依赖。项目结构和代码如下:


项目只有一个接口,接口中定义了一个简单的api方法,这样一个简单的api项目就完成了,执行 install 打包并安装到本地。

生产者服务
接下来定义生产者。首先定义依赖,主要内容如下:

可以看到使用的是springboot2.0.5,依赖了dubbo的start项目和api项目,其它都很简单。启动类不需要修改。接下来看配置文件:

可以看到,application,protocol,registry等都是原来dubbo的配置。接下来定义服务生产者的接口实现:

接口的实现方法中并没有特别的东西,需要注意的是@Service注解并不是原来spring的注解,而是在dubbo中定义的,属性中包含了接口所在服务的版本,名称id,协议,注册中心等等。
此时生产者的项目已经完成,启动项目可以看到注册成功:


一个生产者服务项目就完成了。
消费者服务
最后编写消费者项目。首先定义依赖,主要内容如下:

可以看到主要内容和生产者一样。接下来修改配置文件,内容如下:

基本上就是定义了dubbo的一些基本属性,与生产者基本一致。
接下来定义一个调用 RPC 服务的方法:

最后在消费者项目中,定义一个简单的接口调用此方法,验证结果:

消费者项目完成了,接下来启动项目:


可以看到启动和注册成功。
最后测试,情况控制台,并在浏览器访问此接口:

生产者和消费者的控制台分别如下:


成功!!!
代码地址: https://gitee.com/blueses/spring-boot-demo
网友评论