java dubbo协议_Dubbo同时支持多种协议(以dubbo和rest为例)

一. 背景知识

有时候微服务需要提供给多个消费者, 而不通过的消费者可能希望依据自身情况使用不同的协议. 另一方面, 有时候如果原本服务以 dubbo 协议提供服务, 但是为了调试或者监控方便, 我们也提供 rest 协议.

本文示例服务者同时提供 dubbo 和 rest 协议. 使用的 dubbo 版本为 2.7.1, springboot 版本为 2.1.5.

为了真实地模拟不同微服务之间的调用, 本文将服务者和消费分开. 对应的项目有两个, 分别为dubboshop-inventory(服务者)和dubboshop-order(消费者). 其结构如下:

dubboshop-inventory (库存微服务. 这个项目主要演示服务提供者角色)

|- dubbo-api: 包含服务接口和 DTO 对象. 打包成 `dubboshop-inventory:1.0.0-snapshot.jar`, 通过 `mvn install`到本地或者`mvn deploy`部署到私服, 在下面`dubboshop-order`项目中引用依赖.

|- fun.faceless.dubboshop.comms.entity.Result.java

|- fun.faceless.dubboshop.comms.entity.CommRetCode.java

|- dubbo-provider: 服务接口具体实现类

|- fun.faceless.dubboshop.inventory.dubboprovider.DubboApplication.java

|- fun.faceless.dubboshop.inventory.dubboprovider.impl.InventoryProviderImpl.java

dubboshop-order (订单微服务)

|- dubbo-provider: 订单服务的提供者, 同时是dubboshop-inventory服务的消费者. 这里主要演示其作为消费者的角色.

|- fun.faceless.dubboshop.order.dubboprovider.impl.OrderProviderImpl.java

二. 通用dubbo配置

本文两个项目都作为服务者, 也都支持dubbo和rest协议, 所以两者dubbo相关的依赖都包含以下几部分.

1) 首先引入通用 dubbo 依赖

org.apache.dubbo

dubbo-bom

pom

org.apache.dubbo

dubbo

${dubbo.version}

org.apache.thrift

libthrift

org.apache.dubbo

dubbo-spring-boot-starter

org.apache.dubbo

dubbo-dependencies-zookeeper

2.7.1

pom

log4j

log4j

slf4j-log4j12

org.slf4j

2) dubbo rest 依赖

org.apache.dubbo

dubbo-rpc-rest

org.apache.tomcat.embed

tomcat-embed-core

三. 服务者(Provider)实现

3.1 服务接口定义 dubbo-api

1) 数据传输对象定义 Result.java:

注意一定要定义默认构造函数和实现Serializable接口.

@Data

@NoArgsConstructor

@AllArgsConstructor

public class Result implements Serializable {

private static final long serialVersionUID = 1L;

public static String SUCCESS_MSG = "SUCC";

public static String DEFAULT_FAIL_MSG = "FAIL";

private String code;

private String msg;

private String subCode;

private String subMsg;

private String sign;

private Object data;

private Res

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值