一、整合流程
- 引入依赖(注意依赖的版本兼容关系,可查询官网)
<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>
<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>
- 配置 yml 文件
dubbo:
application:
name: @project.artifactId@
qos-enable: true
qos-port: 3333
protocol:
name: dubbo
port: -1
registry:
address: nacos://localhost:8848
use-as-metadata-center: false
use-as-config-center: false
- 开启 Dubbo 的启用注解
@SpringBootApplication
@EnableDubbo
public class OrderApp {
public static void main(String[] args) {
SpringApplication.run(OrderApp.class, args);
}
}
- Dubbo 中的实体类必须要序列化(即实体类需要实现 Serializable 接口)
二、使用案例
- 发布服务
@DubboService
public class UserServiceImpl implements UserService {
@Resource
private UserMapper userMapper;
@Override
public List<Account> getAll() {
return userMapper.findAll();
}
}
- 拉取服务
@Service
public class OrderServiceImpl implements OrderService {
@DubboReference
private UserService userService;
@Override
public void addOrder() {
userService.getAll();
}
}
三、FAQ
- 上述流程较为简单,如果有些配置项不太清楚,可求助搜索引擎哦
- use-as-metadata-center 与 use-as-config-center 配置是为了解决启动时的
java.lang.RuntimeException: publish nacos metadata failed 错误,出现错误的原因可参考 Github