Spring Boot 整合 Apache Dubbo
2021-01-26 07:14
标签:注意 默认端口 log4 boolean build 面向 ast tps modules 注意,是 Spring Boot 系列:整合 Alibaba Dubbo 我这里为了和之前老版本的 该项目主要作用是定义工程信息、管理整个项目依赖版本等等,所以 根工程中使用了 无需更多依赖,所以很简单。 实体 此子项目是一个服务类项目,也就是将接口服务注册到 注意: 此子项目就是一个消费项目,比如商品模块、财务模块等等。 模拟一个接口获取订单详情。 注意: 一切就绪,如果在 我们选用 默认端口: 成功启动后可以在 成功将借口注册到注册中心,说明 启动消费者项目,在浏览器请求消费接口:http://localhost:7000/order/getOrder,成功返回数据如下: 成功请求到 以上的完整代码我已上传到 Github,需要的可以自取测试,欢迎 Spring Boot 整合 Apache Dubbo 标签:注意 默认端口 log4 boolean build 面向 ast tps modules 原文地址:https://www.cnblogs.com/vandusty/p/12853973.htmlApache Dubbo是一款高性能、轻量级的开源 Java RPC 框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
Apache Dubbo,不再是 Alibaba Dubbo。简单来说就是 Alibaba 将 Dubbo 移交给 Apache 开源社区进行维护。参见 dubbo-spring-boot-project一、本文示例说明
1.1 框架版本
Dubbo 版本
Spring Boot 版本1.2 模块关系
order:管理工程信息;order-api:定义RPC服务的接口、参数以及响应结果的结果集;order-provider:RPC服务的提供端;order-consumer:RPC服务的消费端,实际开发过程中实际情况是其它服务的调用该订单RPC服务二、根工程
2.1 创建项目
order
alibaba的dubbo项目区分,文件名取为apache-dubbo-demo,maven 项目名称为order。src目录不需要。2.2
pom.xml
和进行依赖管理。
:声明全局依赖,当子项目指定引用才会继承依赖;:声明全局依赖,子项目直接自动继承依赖。三、
order-api
3.1 项目依赖
3.2 封装
RPC 结果集
ResultCodeEnum.java
public enum ResultCodeEnum {
/*** 通用部分 100 - 599***/
// 成功请求
SUCCESS(200, "successful"),
/*** 这里可以根据不同模块用不同的区级分开错误码,例如: ***/
// 1000~1999 区间表示用户模块错误
// 2000~2999 区间表示订单模块错误
// 3000~3999 区间表示商品模块错误
// 。。。
ORDER_NOT_FOUND(2000, "order not found"),
;
/**
* 响应状态码
*/
private Integer code;
/**
* 响应信息
*/
private String message;
ResultCodeEnum(Integer code, String msg) {
this.code = code;
this.message = msg;
}
public Integer getCode() {
return code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
RpcResult.java
public class RpcResult 3.3 编写一个
RPC 接口public interface OrderDubboService {
RpcResult
OrderDomain.java挺简单的,详见 Github 仓库。四、
order-provider
zookeeper注册中心供消费端调取使用。4.1 项目依赖
4.2 服务实现接口
@Service
public class OrderDubboServiceImpl implements OrderDubboService {
@Override
public RpcResult@Service 是 dubbo 包下面的注解不是 Spring 里面的注解。4.3 项目配置
dubbo 的配置直接用 dubbo,不再以 Spring 开头;base-packages:指定接口实现所在路径。server:
# 服务端口
port: 7777
spring:
application:
name: order-provider
# dubbo 相关配置(dubbo 的配置不再以 Spring 开头)
dubbo:
application:
# 应用名称
name: order-provider
scan:
# 接口实现者(服务实现)包
base-packages: cn.van.order.service.impl
# 注册中心信息
registry:
address: zookeeper://127.0.0.1:2181
protocol:
# 协议名称
name: dubbo
# 协议端口
port: 20880
五、
order-consumer
5.1 项目依赖
5.2 测试接口
@RestController
@RequestMapping("/order")
public class OrderConsumerController {
@Reference
OrderDubboService orderDubboService;
@GetMapping("getOrder")
public RpcResult getOrder() {
return orderDubboService.getOrder();
}
}
@Reference引入的是 Dubbo 接口,所以是 Dubbo 的注解。5.3 配置文件
server:
port: 7000
spring:
application:
name: order-consumer
# dubbo 相关配置
dubbo:
application:
name: order-consumer
registry:
address: zookeeper://127.0.0.1:2181
六、测试
order-consumer 的测试接口能成功请求到数据,则证明 Dubbo 服务搭建成功。6.1 启动
zookeeper
zookeeper作为注册中心,因此启动项目之前需要先启动它。6.2
dubbo-admin
dubbo-admin 便于观察 order-provider 是否成功将接口注册,具体安装步骤详见apache/dubbo-admin
8080。6.3 启动
dubbo-provider
dubbo-admin:已经成功将接口 OrderService 注册到 zookeeper 上如下:
dubbo-provider 注册成功。6.4 启动
order-cosumer
{
"success":true,
"code":200,
"data":{
"id":1,
"orderNum":10086,
"gmtCreate":"2020-05-06T11:59:45.535"
},
"message":null
}
order-provider 提供的数据,说明 Dubbo 搭建成功!七、总结
star!文化交流