本文是Spring Cloud场景下使用Dubbo远程调用,以Nacos替换Zookeeper为注册中心的案例,如果单纯Dubbo融合Nacos作为注册中心,请参考 ☞官方文档;对Nacos不了解的可以参考之前☞Nacos文章;
1. Maven依赖首先增加依赖版本统一管理
Hoxton.RELEASE 2.2.0.RELEASE org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import com.alibaba.cloud spring-cloud-alibaba-dependencies ${alibaba-cloud.version} pom import
增加Dubbo、nacos依赖
com.alibaba.cloud
spring-cloud-starter-dubbo
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
2. 提供服务方[provider]
yaml配置文件
spring:
application:
name: demo-provider-service
cloud:
nacos:
# 注册中心
discovery:
enabled: true
# 自己nacos地址
server-addr: localhost:8848
namespace: xxxx
# dubbo 配置
dubbo:
application.name: ${spring.application.name}
scan:
base-packages: com.demo.service
protocol:
name: dubbo
port: -1
registry:
# 挂载到 Spring Cloud 注册中心,不需要加nacos的namespace,不要使用 nacos://
address: spring-cloud://${spring.cloud.nacos.discovery.server-addr}
对应service接口上增加 @Service 注解,【org.apache.dubbo.config.annotation.Service 下的注解】
import org.apache.dubbo.config.annotation.Service;
@Service(version = "1.0.0", timeout = 10000)
public class DemoProviderServiceImpl implements DemoProviderService {
}
2. 消费服务方[consumer]
yaml配置文件
spring:
application:
name: demo-consumer-service
cloud:
nacos:
# 注册中心
discovery:
enabled: true
# 自己nacos地址
server-addr: localhost:8848
namespace: xxxx
dubbo:
registry:
# 挂载到 Spring Cloud 注册中心
address: spring-cloud://${spring.cloud.nacos.discovery.server-addr}
# 配置namespace
#parameters[namespace]: ${spring.cloud.nacos.discovery.namespace}
cloud:
subscribed-services: demo-provider-service
consumer:
check: false
loadbalance: "leastactive"
引入服务时,增加@Reference注解,[同样是org.apache.dubbo.config.annotation.Reference下面的]
import org.apache.dubbo.config.annotation.Reference;
@RestController
@RequestMapping(value = "test")
public class DemoConsumerController {
@Reference(version = "1.0.0", timeout = 10000, check = false)
private DemoProviderService demoProviderService;
}
3. 启动服务,查看Nacos注册情况
查看详情如下
这样就整合完成了,调用测试接口测试通过;



