问题:
Dubbo和Springcloud一般都是分开的。
把Dubbo整合到SpringCloud系列中去。
使用Springcloud系列的时候。希望用Dubbo来做服务管理(因为dubbo这方面很优秀)
原理:
使用SpringcloudAlibaba整合dubbo
文档:
nacos官方文档: https://nacos.io/zh-cn/docs/quick-start.html
dubbo官方文档: http://dubbo.apache.org/zh-cn/docs/user/quick-start.html
SpringCloudAlibaba地址: https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md
步骤
关于下载和启动nacos就先看这个 https://juejin.cn/user/4001878054538839 的1-2步
1.搭建一个普通的maven项目(api)
2.搭建一个提供者项目整合nacos和dubbo(provider)(2,4一样)
3.编写配置文件和测试相关代码
4.搭建一个消费者项目整合nacos和dubbo(consumer)(2,4一样)
5.编写配置文件和测试相关代码
1.搭建一个普通的maven项目(api)
并写一个简单的接口和方法
2.搭建一个提供者项目整合nacos和dubbo(provider)
1.注意springBoot的版本。这里用2.0.5.RELEASE
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
2.引入Springcloud和SpringcloudAlibaba注意对应的版本。
<dependencyManagement>
<dependencies>
<!--F版本-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR4</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--SpringCloudAlibaba还没正式归入到cloud版本里面去,所以需要额外添加-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.0.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
3.引入dubbo和nacos
<!--nacos-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--dubbo-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency>
4.引入api
<!--上面定定义好的api项目-->
<dependency>
<groupId>com.dripy</groupId>
<artifactId>nacos-dubbo-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
3.编写配置文件和测试相关代码
1.配置文件填写项目相关信息、nacos地址、dubbo的注册中心地址
spring.application.name=nacos-dubbo-provider
server.port=9870
# 注册中心nacos地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
# dubbo的配置
# 扫描路径。别混乱了。。
dubbo.scan.base-packages=com.dripy.nacosdubboprovider.model
# 使用Springcloud的注册中心
dubbo.registry.address=spring-cloud://localhost
# 防止dubbo协议端口冲突
dubbo.protocol.port=-1
2.启用nacos注册发现
启动类添加
@EnableDiscoveryClient注解
3.编写测试实例
实现步骤1里面的接口。
并使用@Service注解。注意是Dubbo的注解,不是Spring的。
org.apache.dubbo.config.annotation
4.搭建一个消费者项目整合nacos和dubbo(consumer)
和步骤2一模一样
5.编写配置文件和测试相关代码
1.配置文件填写项目相关信息、nacos地址、dubbo的注册中心地址
spring.application.name=nacos-dubbo-consumer
server.port=9871
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
# dubbo相关
# 使用Srpingcloud的注册中心
dubbo.registry.address=spring-cloud://localhost
# 扫描路径。别混乱了。。
dubbo.scan.base-packages=com.dripy.nacosdubboconsume.controller
# 这里比消费者多了一个属性 服务提供者的名称。用于定于那个服务 spring.application.name
dubbo.cloud.subscribed-services=nacos-dubbo-provider
2.启用nacos注册发现
启动类添加
@EnableDiscoveryClient注解
3.编写测试实例
编写一个测试接口,
使用@Reference注入接口。注意是Dubbo的注解,不是Spring的。
4.测试
总结:
1. @Service,@Reference这两个路径别写错了。这是dubbo的属性。
2.jar包的groupId别写错了。因为alibaba的版本不一样,引用的也不一样。
3.dubbo扫描路径写对,不要写错了,否者会注册不了服务。
其他应该就没了。遇到问题,从头捋一遍,看看漏了什么没有。
项目整体结构图: