Dubbo 整合 Nacos 2.x

本文介绍了如何在SpringBoot项目中整合ApacheDubbo,包括依赖管理、配置YAML文件、启用注解、实体类序列化以及发布和服务的使用示例。同时提供了常见问题解答(FAQ),解决启动时可能出现的错误。

一、整合流程

  1. 引入依赖(注意依赖的版本兼容关系,可查询官网)
<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.7.6</version>
</parent>

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-alibaba-dependencies</artifactId>
      <version>2021.0.5.0</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

<dependencies>
  <!--dubbo starter-->
  <dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>3.2.10</version>
  </dependency>

  <!--注册中心-->
  <dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  </dependency>

  <!--配置中心-->
  <dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  </dependency>
</dependencies>
  1. 配置 yml 文件
dubbo:
  application:
    # 引用 pom 文件中的项目名称
    name: @project.artifactId@
    qos-enable: true
    # 如果在同一台机器上启动多个服务,最好配置一下,否则大概率端口冲突
    qos-port: 3333
  protocol:
    name: dubbo
    port: -1
  registry:
    # 前面有 nacos 协议
    address: nacos://localhost:8848 
    # 这两行代码是为了解决启动错误,具体原因详见下面FAQ
    use-as-metadata-center: false 
    use-as-config-center: false
  1. 开启 Dubbo 的启用注解
@SpringBootApplication
// 这个注解必须开启
@EnableDubbo
public class OrderApp {
    public static void main(String[] args) {
        SpringApplication.run(OrderApp.class, args);
    }
}
  1. Dubbo 中的实体类必须要序列化(即实体类需要实现 Serializable 接口)

二、使用案例

  1. 发布服务
// 使用下面注解发布服务
@DubboService
public class UserServiceImpl implements UserService {

    @Resource
    private UserMapper userMapper;

    @Override
    public List<Account> getAll() {
        return userMapper.findAll();
    }
}
  1. 拉取服务
@Service
public class OrderServiceImpl implements OrderService {

    // 下面的注解拉取服务
    @DubboReference
    private UserService userService;

    @Override
    public void addOrder() {
        // ...
        userService.getAll();
    }
}

三、FAQ

  1. 上述流程较为简单,如果有些配置项不太清楚,可求助搜索引擎哦
  2. use-as-metadata-center 与 use-as-config-center 配置是为了解决启动时的 java.lang.RuntimeException: publish nacos metadata failed 错误,出现错误的原因可参考 Github
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值