spring cloud alibaba配置远程调用Dubbo

1、新加公共API子模块,用于定义接口对外暴露,远程调用需要此接口

public interface TestService {
    String dubboTest(String message); //测试方法
}

2、提供者代码(子模块结构如下)
在这里插入图片描述

2.1 安装依赖(包括公共API)

<!--dubbo依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-dubbo</artifactId>
        </dependency>
        <!--api公共依赖-->
        <dependency>
            <groupId>cloubalibabablx</groupId>
            <artifactId>dubbo-api-sample</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

2.2 bootstrap.yml进行dubbo配置

dubbo:
  scan:
    base-packages: com.springcloudalibaba.dubbo.service.Impl #dubbo服务扫描基准包
  protocol:
    name: dubbo #dubbo协议
    port: -1  # dubbo 协议端口( -1 表示自增端口,从 20880 开始)
  registry:
    address: spring-cloud://localhost  #spring-cloud://localhost说明挂载到 Spring Cloud 注册中心
spring:
  main:
    allow-bean-definition-overriding: true # 允许bean定义覆盖 Spring Boot 2.1 需要设定

其中base-packages代表扫描的实现公共API的类下的包路径
2.3 新建类实现公共API接口
注:@Service是dubbo的,不是spring下的

@Service
public class TestServiceImpl implements TestService {
    @Override
    public String dubboTest(String message){
        return "我是提供者,已收到消息"+message;
    }
}

3、消费端
3.1 安装依赖,与提供端一致
3.2 bootstrap.yml进行dubbo配置配置文件
其中 subscribed-services是提供端的服务名称,指的是调用哪个服务下的

dubbo:
  registry:
    address: spring-cloud://localhost  #spring-cloud://localhost说明挂载到 Spring Cloud 注册中心
  cloud:
    subscribed-services: dubbo-provider-sample # 订阅的服务提供者应用名称

3.3 测试代码

@RestController
public class DubboTestController {
    @Reference
    private TestService testService;

    @GetMapping("/dubboTest")
    public String dubboTest(){ // dubbo方式服务消费者调用服务提供者的测试方法
        return testService.dubboTest("嘿嘿!我是服务消费者");
    }

}

4、jdk17踩坑
JDK 17使用Dubbo时,需要增加一下以下vm参数

--add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.math=ALL-UNNAMED

在这里插入图片描述
在这里插入图片描述
新版本踩坑:
新版本:spring cloud alibaba 版本2021.0.5.0
1、生产者注入注解为:@DubboService
2、消费者注解:@DubboReference
3、依赖有所变动,需要使用2.7.13版本的dubbo

<!--dubbo依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-dubbo</artifactId>
            <version>2.2.7.RELEASE</version>
        </dependency>

4、对应对版本所有的子模块,需要新增依赖

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>

5、如果启动时报循环依赖错误,需要修改配置文件

spring:
  main:
    allow-circular-references: true

注:如果消费端启动报启动类错误的话,则造消费端配置文件新增如下配置

dubbo:
  protocol:
    name: dubbo #dubbo协议
    port: -1  # dubbo 协议端口( -1 表示自增端口,从 20880 开始)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员阿明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值