springCloud整合Dubbo

springCloud整合Dubbo

前言

项目之间的服务的调用之前是用的openFeign,openFeign与dubbo相比的话从传输速度等方面来讲明显是dubbo更好一些,所以也就是为什么要舍弃openFeign转用dubbo的原因,本文只讲整合dubbo中遇到的坑以及一些必须的配置,远程调用实例建议参考其他文章。

一、引入jar包

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.6.2</version>
        </dependency>

        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.8</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo-registry-nacos</artifactId>
            <version>2.6.7</version>
        </dependency>

二、dubbo在application.yml中的配置

1.注意格式

spring:
    application:
        name: dubbo-test
dubbo:
    protocol:
        port: -1 #-1代表自增,也可自行定义端口
        name: dubbo #协议名称
        scan: #服务扫描基础包路径
            base-packages: src/main/java/com/controller/test
    registry:
        address: nacos://localhost:8848 #nacos注册地址
    cloud:
        subscribed-services: dubbo-provider #远程调用实现类所在的应用
    consumer:
        check: false #关闭订阅服务是否启动的检查

2.需要在启动类上加上@EnableDubbo
在这里插入图片描述
3.需要在实现类上加上@Service且注意不要导错包,我们需要引入的是alibaba的相关包
在这里插入图片描述
4.在控制层注入bean进行方法的调用的时候需要使用的是@Reference注解

以上就是配置及一些要注意的点,下面就讲些遇到的坑及解决方案

在使用消费端去调用服务端时,使用@Reference注解注入的bean居然是空的,导致出现了空指针的情况,如下
在这里插入图片描述

以上情况有两个解决办法
1.要先启动服务端,再启动客户端就不会出现以上情况,但是实际的微服务项目中不可能是只有两个服务之间的调用,实际调用可能错综复杂,显然这种解决办法不太实用,这就要用到第二种方法了
2.需要在配置文件中加个配置,如下

dubbo:
    consumer:
        check: false #关闭订阅服务是否启动的检查

第二个坑就是启动服务的时候会出现
java.lang.IllegalStateException: No such any registry to export service in provider 192.168.1.53 use dubbo version 2.6.2, Please add <dubbo:registry address=“…” /> to your spring config. If you want unregister, please set <dubbo:service registry=“N/A” /> 的问题,可能出现这个错误的情况有很多,但是我的是因为yml格式不对,导致配置不生效的情况,需要注意的是dubbo并不是跟在spring下的,正确的格式应该是同级的,如下
在这里插入图片描述
不同框架配置情况不同,根据自身而定

以上就是整合dubbo遇到的情况啦,第一次搞这个,轻喷

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值