改造“自动投递微服务”和“简历微服务”,删除OpenFeign 和 Ribbon,使用DubboRPC 和 Dubbo LB
首先,需要删除或者注释掉父工程中的热部署依赖
<!--热部署-->
<!--<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
-->
1、服务提供者工程改造
(1)提取dubbo服务接口工程,lagou-service-dubbo-api
接口类
package com.lagou.edu.service;
public interface ResumeService {
Integer findDefaultResumeByUserId(Long userId);
}
(2)改造提供者工程(简历微服务)
- pom文件添加spring cloud + dubbo整合的依赖,同时添加dubbo服务接口工程依赖
<!--spring cloud+dubbo 依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-dubbo</artifactId> </dependency> <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-apache-dubbo-adapter</artifactId> </dependency> <!--dubbo 服务接口依赖--> <dependency> <groupId>com.lagou.edu</groupId> <artifactId>lagou-service-dubbo-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
- 删除原有ResumeService接口,引入dubbo服务接口工程中的ResumeService接口,适当调整代码,在service的实现类上添加dubbo的@Service注解
- application.yml或者bootstrap.yml配置文件中添加dubbo配置
dubbo:
scan:
# dubbo 服务扫描基准包
base-packages: com.lagou.edu.service.impl
protocol:
# dubbo 协议
name: dubbo
# dubbo 协议端口( -1 表示自增端口,从 20880 开始)
port: -1
registry:
# 挂载到 Spring Cloud 的注册中心
address: spring-cloud://localhost
另外增加一项配置
- 运行发布之后,会发现Nacos控制台已经有了服务注册信息,从元数据中可以看出,是dubbo注册上来的
2、服务消费者工程改造
接下来改造服务消费者工程—>自动投递微服务
- pom.xml中删除OpenFeign相关内容
- application.yml配置文件中删除和Feign、Ribbon相关的内容;代码中删除Feign客户端内容;
- pom.xml添加内容和服务提供者⼀样
- application.yml配置文件中添加dubbo相关内容
dubbo:
registry:
# 挂载到 Spring Cloud 注册中心
address: spring-cloud://localhost
cloud:
# 订阅服务提供方的应用列表,订阅多个服务提供者使用 "," 连接
subscribed-services: lagou-service-resume
同样,也配置下spring.main.allow-bean-definition-overriding=true
- Controller代码改造,其他不变
- 运行发布之后,同样会发现Nacos控制台已经有了服务注册信息
- 测试:http://localhost:8099/autodeliver/checkState/1545132 (我新复制了一个工程,占用端口8099)
全部代码:资源地址