SpringBoot2集成dubbo(0.2)
0.dubbo是接口级别的,而spring cloud是服务级别的。
1.新建个maven普通工程,将接口类写在这里(详见工程nev-toyota-service-zy-api)
2.在服务提供者(provider)工程中的pom.xml中引入dubbo依赖及上述的接口工程的依赖:
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<dependency>
<groupId>com.toyota.service.zy</groupId>
<artifactId>nev-toyota-service-zy-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
3.在服务提供者的主启动类上加上@EnableDubbo注解。
4.在application.yml中或nacos的配置中加入dubbo相关配置(即将功能注册到zookeeper):
dubbo:
application:
name: nev-toyota-service-zy-analysis
protocol:
name: dubbo
port: 20880
registry:
address: zookeeper://10.10.94.88:2181
provider:
timeout: 1000
scan: org.spring.springboot.dubbo
provider:
service:
version: 1.0.0
5.在提供服务的类(即实现接口中的方法的类)上加上@Service注解,注意这个service是dubbo包的
@com.alibaba.dubbo.config.annotation.Service(version = "${provider.service.version}")
这个版本属性就是配置里的,为的是让接口调用不出错,精确对应上。
6.同样在consumer中也引入上述依赖:
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<dependency>
<groupId>com.toyota.service.zy</groupId>
<artifactId>nev-toyota-service-zy-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
7.在服务消费者的主启动类上加上@EnableDubbo注解。
8.在application.yml中或nacos的配置中加入dubbo相关配置:
dubbo:
application:
name: nev-toyota-service-zy-encapsulation
registry:
address: zookeeper://10.10.94.88:2181
scan: org.spring.springboot.dubbo
provider:
service:
version: 1.0.0
消费者不需要配dubbo协议和端口
9.在消费的service中引入接口实例并加上@Reference
@Reference(version = "${provider.service.version}")
private AnalysisService analysisService;
version与上述功能一样。
10.这样就可以用RPC的方式调用接口中的方法了。完!