Dubbo spring cloud 学习(三)
spring cloud alibaba dubbo nacos整合
- spring cloud alibaba版本
2.2.1.RELEASE
- spring boot 版本
2.2.1.RELEASE
服务提供者
-
pom 文件引入依赖
<!-- Dubbo Spring Cloud Starter --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-dubbo</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!-- List all Spring Cloud starters for Service Discovery --> <!-- Spring Cloud Nacos Service Discovery --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.2.1.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
-
application.properties
spring.application.name=dubbo-spring-cloud-provider dubbo.scan.base-packages=com.lujia.lesson.service dubbo.protocol.name=dubbo dubbo.protocol.port=-1 dubbo.protocol.id=dubbo spring.cloud.nacos.discovery.server-addr=172.16.1.212:8848 dubbo.cloud.subscribed-services=dubbo-spring-cloud-provider
-
@org.apache.dubbo.config.annotation.Service 注解增强类
@Service(protocol = "dubbo") public class LoginServiceImpl implements ILoginService { @Override public String login(String userName, String password) { return userName+password+"success"; } }
服务消费者
-
pom
<!-- Dubbo Spring Cloud Starter --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.2.1.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!-- Dubbo Spring Cloud Starter --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-dubbo</artifactId> </dependency> <!-- List all Spring Cloud starters for Service Discovery --> <!-- Spring Cloud Nacos Service Discovery --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.2.1.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
-
application.properties
spring.application.name=dubbo-spring-cloud-consumer server.port=8080 dubbo.protocol.name=dubbo dubbo.protocol.port=-1 spring.cloud.nacos.discovery.server-addr=172.16.1.212:8848 dubbo.cloud.subscribed-services=dubbo-spring-cloud-provider
-
@org.apache.dubbo.config.annotation.Reference 注解注入bean
@Reference private ILoginService loginService; @GetMapping("/login") public String login(String username, String password){ return loginService.login(username,password); }
闭坑
-
注意spring-cloud-alibaba的版本要与spring boot的一致,我这里都使用的2.2.1.RELEASE
-
服务端配置
dubbo.protocol.id=dubbo
,不然会报错Description:
A component required a bean named ‘dubbo’ that could not be found.
Action:
Consider defining a bean named ‘dubbo’ in your configuration.
-
消费端要订阅服务端
dubbo.cloud.subscribed-services=dubbo-spring-cloud-provider
-
服务端配置dubbo扫描包路径
dubbo.scan.base-packages=com.lujia.lesson.service
一开始没有配置,在nacos中查看,服务实例是注册成功,但是消费端一直找不到服务提供者
No provider available for the service com.lujia.lesson.dubbo.ILoginService from the url spring-cloud://localhost:9090/org.apache.dubbo.registry.RegistryService?application=dubbo-spring-cloud-consumer&dubbo=2.0.2&init=false&interface=com.lujia.lesson.dubbo.ILoginService&methods=login&pid=46868&qos.enable=false®ister.ip=192.168.254.1&release=2.7.6&side=consumer&sticky=false×tamp=1616546282159 to the consumer 192.168.254.1 use dubbo version 2.7.6
服务注册信息
服务详情信息