文章目录

  • 1. provider端配置
  • 2. consumer端配置
  • 3. 从Open Feign迁移到Dubbo

1. provider端配置

引入依赖

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

application.yml

dubbo:scan:# 指定 Dubbo 服务实现类的扫描基准包base-packages: com.cry.mall.user.service
#  application:
#    name: ${spring.application.name}protocol:# dubbo 协议name: dubbo# dubbo 协议端口( -1 表示自增端口,从 20880 开始)port: -1
#  registry:
#    #挂载到 Spring Cloud 注册中心  高版本可选
#    address: spring-cloud://127.0.0.1:8848spring:application:name: spring-cloud-dubbo-provider-usermain:# Spring Boot2.1及更高的版本需要设定allow-bean-definition-overriding: truecloud:nacos:# Nacos 服务发现与注册配置discovery:server-addr: 127.0.0.1:8848

服务实现类上配置@DubboService暴露服务

@DubboService
public class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;@Overridepublic List<User> list() {return userMapper.list();}@Overridepublic User getById(Integer id) {return userMapper.getById(id);}
}

2. consumer端配置

引入依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

application.yml

dubbo:cloud:# 指定需要订阅的服务提供方,默认值*,会订阅所有服务,不建议使用subscribed-services: spring-cloud-dubbo-provider-user#  application:
#    name: ${spring.application.name}protocol:# dubbo 协议name: dubbo# dubbo 协议端口( -1 表示自增端口,从 20880 开始)port: -1
#  registry:
#    #挂载到 Spring Cloud 注册中心  高版本可选
#    address: spring-cloud://127.0.0.1:8848spring:application:name: spring-cloud-dubbo-consumer-usermain:# Spring Boot2.1及更高的版本需要设定allow-bean-definition-overriding: truecloud:nacos:# Nacos 服务发现与注册配置discovery:server-addr: 127.0.0.1:8848

当应用使用属性dubbo.cloud.subscribed-services为默认值时,日志中将会输出警告:

服务消费方通过@DubboReference引入服务

@RestController
@RequestMapping("/user")
public class UserConstroller {@DubboReferenceprivate UserService userService;@RequestMapping("/info/{id}")public User info(@PathVariable("id") Integer id){return userService.getById(id);}@RequestMapping("/list")public List<User> list(){return userService.list();}
}

3. 从Open Feign迁移到Dubbo

Dubbo Spring Cloud 提供了方案,即 @DubboTransported注解,支持在类,方法,属性上使用。能够帮助服务消费端的 Spring Cloud Open Feign 接口以及 @LoadBalanced RestTemplate Bean 底层走 Dubbo 调用(可切换 Dubbo 支持的协议),而服务提供方则只需在原有 @RestController 类上追加 Dubbo @Servce 注解(需要抽取接口)即可,换言之,在不调整 Feign 接口以及 RestTemplate URL 的前提下,实现无缝迁移。
修改服务提供者

@DubboService
@Slf4j
@RestController
@RequestMapping("/user")
public class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;@Override@RequestMapping("/list")public List<User> list() {log.info("查询user列表");return userMapper.list();}@Override@RequestMapping("/getById/{id}")public User getById(@PathVariable("id") Integer id) {return userMapper.getById(id);}
}

服务消费端引入依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

feign的实现,启动类上添加@EnableFeignClients

@SpringBootApplication
@EnableFeignClients
public class SpringCloudDubboConsumerUserFeignApplication {public static void main(String[] args) {SpringApplication.run(SpringCloudDubboConsumerUserFeignApplication.class, args);}}

feign接口添加 @DubboTransported 注解

@FeignClient(value = "spring-cloud-dubbo-provider-user-feign",path = "/user")
@DubboTransported(protocol = "dubbo")
public interface UserDubboFeignService {@RequestMapping("/list")public List<User> list();@RequestMapping("/getById/{id}")public User getById(@PathVariable("id") Integer id);
}@FeignClient(value = "spring-cloud-dubbo-provider-user-feign",path = "/user")
public interface UserFeignService {@RequestMapping("/list")public List<User> list();@RequestMapping("/getById/{id}")public User getById(@PathVariable("id") Integer id);
}

调用对象添加@DubboTransported注解

@RestController
@RequestMapping("/user")
public class UserConstroller {@DubboReferenceprivate UserService userService;@RequestMapping("/info/{id}")public User info(@PathVariable("id") Integer id){return userService.getById(id);}@Autowired@DubboTransportedprivate UserFeignService userFeignService;@RequestMapping("/list")public List<User> list(){return userFeignService.list();}@Autowiredprivate UserDubboFeignService userDubboFeignService;@RequestMapping("/list2")public List<User> list2(){return userDubboFeignService.list();}@Autowiredprivate RestTemplate restTemplate;@Bean@LoadBalanced@DubboTransportedpublic RestTemplate restTemplate() {return new RestTemplate();}@RequestMapping("/list3")public List<User> list3(){String url = "http://spring-cloud-dubbo-provider-user-feign/user/list";return restTemplate.getForObject(url, List.class);}}

【SpringCloudAlibaba】微服务组件Dubbo相关推荐

  1. 微服务入门篇(二),万字长文带你实操作SpringCloudAlibaba微服务组件

    目录 SpringCloudAlibaba介绍 简介 为什么要学SpringCloudAlibaba 从Spring Cloud netflix 到 Spring Cloud Alibaba 功能组件 ...

  2. SpringCloud及SpringCloudAlibaba微服务组件

    目录 1 微服务架构概述 什么是微服务 服务注册中心: 服务调用: 服务调用2: 服务降级: 服务网关: 服务配置: 服务总线: 1 微服务架构概述 什么是微服务 微服务是一种架构模式,他提倡将单一应 ...

  3. 读书笔记-SpringCloudAlibaba微服务原理与实战-谭锋-【未完待续】

    SpringCloudAlibaba微服务原理与实战 谭锋 电子工业出版社 ISBN-9787121388248 仅供参考, 自建索引, 以备后查 一.应用架构演进.微服务发展史 1.单体架构 一般来 ...

  4. Alibaba微服务组件Sentinel

    Alibaba微服务组件Sentinel 1.分布式系统遇到的问题 服务的可用性问题 ​ 提供系统可用性的关键是在相关组件失效情况下,系统能多快恢复并继续正确提供服务.当服务器挂掉的时候首先想到什么原 ...

  5. 2:Alibaba微服务组件Nacos注册中心

    Spring Cloud Alibaba系列目录 提示:这里是第二章:Alibaba微服务组件Nacos注册中心 微服务和Spring Cloud Alibaba介绍 Alibaba微服务组件Naco ...

  6. 8.10Dubbo框架里的微服务组件

    title date comments categories tags permalink Dubbo框架里的微服务组件 2020/4/28 true 微服务 微服务 8.10 今天以开源微服务框架 ...

  7. 微服务组件记事本:Skywalking的ES索引 · 收藏篇

    (2021年倒计时33天) 书接上文,在上回书中,我们说到了<微服务组件记事本:Skywalking执行效果 · 多图篇>,文章比较详细的展示了Skywalking中的各种数据和图表展示, ...

  8. MongoDB的RestAPI微服务组件--Mongo-Rest介绍

    MongoDB的RestAPI微服务组件--Mongo-Rest介绍 开源项目:https://gitee.com/yunwisdoms/mongodb-rest 安装 使用npm安装: npm in ...

  9. 微服务 注册中心的作用_微服务架构Dubbo之注册中心(Zookeeper)

    注册中心简介 在微服务架构中,注册中心是核心的基础服务之一.在微服务架构流行之前,注册中心就已经开始出现在分布式架构的系统中.Dubbo是一个在国内比较流行的分布式框架,被大量的中小型互联网公司所采用 ...

  10. docker -v 文件夹下没有数据_微服务就是Dubbo?并没有那么简单!微服务架构+Docker+k8s了解下...

    微服务算是面试中非常高频的词汇了! 之前我就遇到一个候选人,我问他微服务是什么,他说:"微服务就是 Dubbo--",然后把 Dubbo 的原理说的清清楚楚.回答的我都动心了,我猜 ...

最新文章

  1. 搜索引擎技术之概要预览
  2. 优点和阵列的缺点,并且一个链表
  3. 有大佬通过研发这款Chrome插件的使用教程,赚了上百万! 网友:互联网的钱太好赚了~...
  4. 【tensorflow】OP_REQUIRES failed at variable_ops.cc:104 Already exists: Resource
  5. 阿里巴巴 Java 开发手册之编程规约(一)-------我的经验
  6. 3、假设有一个对象数组,想根据某个对象属性对数组进行排序时
  7. excel公式 某一个单元格等于另一个单元格的值_15个excel小技巧,简单易学,一看就会,收藏备用吧...
  8. Demo能为游戏带来什么?
  9. matlab矩阵处理实验报告,matlab实验报告一二三
  10. 计算机计算资源估计,项目时间管理中的计算题三点估算和关键路径法
  11. 梦记录:1204(梦到观世音菩萨像)
  12. python填充nan_Python Pandas Dataframe填充NaN值
  13. 增大图片(在图像分割、GAN、超分辨中经常用到)
  14. CSS SVG开关按钮切换网页白天和夜晚
  15. VSCode Remote SSH 过程试图写入的管道不存在
  16. 订单超过 7 天不允许退货
  17. linux抓包pppoe,pppoe抓包流程和拨号流程
  18. vue 禁止input输入框输入特殊字符和汉字
  19. 如何判断一棵树是否是满二叉树
  20. php团购实现,团购网站的设计与实现(PHP,MySQL)(含录像)

热门文章

  1. Learn Git Branching 学习笔记(关于origin和它的周边——Git远程仓库高级操作篇)
  2. JAVA_HOME is not defined correctly
  3. catia圆角交点如何标注_Catia怎么使用凸台和倒圆角命令?
  4. GVR-Cardboard_DayDream
  5. python爬取二手房信息,基于python爬取链家二手房信息代码示例
  6. Bitmovin首席执行官Stefan:开发者正在构建视频产品的未来
  7. 学区摇号软件设计_小升初:多校划片与单校划片,2020年小摇号最全解析!
  8. 圣剑传说 玛娜传奇(Legend of Mana)(LOM)全武器取得方法
  9. perl Data::Dumper和Storable的例子
  10. 春天里,阳光下,无限的哀思和想念