Spring Cloud Feign

Spring Cloud Feign是一套基于Netflix Feign实现的声明式服务调用客户端。它使得编写Web服务客户端变得更加简单。我们只需要通过创建接口并用注解来配置它既可完成对Web服务接口的绑定。它具备可插拔的注解支持,包括Feign注解、JAX-RS注解。它也支持可插拔的编码器和解码器。Spring Cloud Feign还扩展了对Spring MVC注解的支持,同时还整合了Ribbon和Eureka来提供均衡负载的HTTP客户端实现。

下面,我们通过一个例子来展现Feign如何方便的声明对eureka-client服务的定义和调用。

动手试一试

下面的例子,我们将利用之前构建的eureka-server作为服务注册中心、eureka-client作为服务提供者作为基础。而基于Spring Cloud Ribbon实现的消费者,我们可以根据eureka-consumer实现的内容进行简单改在就能完成,具体步骤如下:

根据eureka-consumer复制一个服务消费者工程,命名为:eureka-consumer-feign。在pom.xml中增加下面的依赖: ... org.springframework.cloud spring-cloud-starter-feign

修改应用主类。通过@EnableFeignClients注解开启扫描Spring Cloud Feign客户端的功能: @EnableFeignClients @EnableDiscoveryClient @SpringBootApplication public class Application {

public static void main(String[] args) {new SpringApplicationBuilder(Application.class).web(true).run(args);
}
复制代码

}

创建一个Feign的客户端接口定义。使用@FeignClient注解来指定这个接口所要调用的服务名称,接口中定义的各个函数使用Spring MVC的注解就可以来绑定服务提供方的REST接口,比如下面就是绑定eureka-client服务的/dc接口的例子: @FeignClient("eureka-client") public interface DcClient {

@GetMapping("/dc")
String consumer();
复制代码

}

修改Controller。通过定义的feign客户端来调用服务提供方的接口: @RestController public class DcController {

@Autowired
DcClient dcClient;@GetMapping("/consumer")
public String dc() {return dcClient.consumer();
}
复制代码

} 通过Spring Cloud Feign来实现服务调用的方式更加简单了,通过@FeignClient定义的接口来统一的生命我们需要依赖的微服务接口。而在具体使用的时候就跟调用本地方法一点的进行调用即可。由于Feign是基于Ribbon实现的,所以它自带了客户端负载均衡功能,也可以通过Ribbon的IRule进行策略扩展。另外,Feign还整合的Hystrix来实现服务的容错保护,在Dalston版本中,Feign的Hystrix默认是关闭的。待后文介绍Hystrix带领大家入门之后,我们再结合介绍Feign中的Hystrix以及配置方式。

源码来源:http://minglisoft.cn/honghu/technology.html

在完成了上面你的代码编写之后,读者可以将eureka-server、eureka-client、eureka-consumer-feign都启动起来,然后访问http://localhost:2101/consumer ,来跟踪观察eureka-consumer-feign服务是如何消费eureka-client服务的/dc接口的,并且也可以通过启动多个eureka-client服务来观察其负载均衡的效果。

Spring Cloud Spring Boot mybatis 企业分布式微服务云(五)服务消费(Feign)【Dalston版】...相关推荐

  1. (二十)java版spring cloud+spring boot 社交电子商务平台-spring cloud构建全球多租户分布式微服务部署的方案...

    电子商务平台源码请加企鹅求求:一零三八七七四六二六.最近在用spring cloud分布式微服务云架构做一个全球多租户分布式部署的方案,我在这里只是简单的记录,当前的架构图只能是一个大概的方案,具体实 ...

  2. Java版分布式微服务云开发架构 Spring Cloud+Spring Boot+Mybatis+ElementUI

    鸿鹄云架构[系统管理平台]是一个大型 企业.分布式.微服务.云架构的JavaEE体系快速研发平台,基于 模块化.微服务化.原子化.热部署的设计思想,使用成熟领先的无商业限制的主流开源技术 (Sprin ...

  3. JAVAspringboot微服务b2b Spring MVC+mybatis+spring cloud+spring boot+spring security

    鸿鹄云商大型企业分布式互联网电子商务平台,推出PC+微信+APP+云服务的云商平台系统,其中包括B2B.B2C.C2C.O2O.新零售.直播电商等子平台. 分布式.微服务.云架构电子商务平台 java ...

  4. java电子商务系统源码 Spring MVC+mybatis+spring cloud+spring boot+spring security

    鸿鹄云商大型企业分布式互联网电子商务平台,推出PC+微信+APP+云服务的云商平台系统,其中包括B2B.B2C.C2C.O2O.新零售.直播电商等子平台. 分布式.微服务.云架构电子商务平台 java ...

  5. 鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统

    鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统 1. 项目背景 一.随着公司的快速发展,企业人员和经 ...

  6. Java版知识付费源码 Spring Cloud+Spring Boot+Mybatis+uniapp+前后端分离实现知识付费平台

    提供职业教育.企业培训.知识付费系统搭建服务.系统功能包含:录播课.直播课.题库.营销.公司组织架构.员工入职培训等. 提供私有化部署,免费售后,专业技术指导,支持PC.APP.H5.小程序多终端同步 ...

  7. (四)java版spring cloud+spring boot 社交电子商务平台-断路器(Hystrix)

    b2b2c电子商务社交平台源码请加企鹅求求:一零三八七七四六二六.在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTempl ...

  8. (一)java版spring cloud+spring boot+redis多租户社交电子商务平台-简介

    Spring cloud b2b2c电子商务社交平台源码请加企鹅求求:一零三八七七四六二六.Spring Cloud是一系列框架的有序集合.利用Spring Boot的开发模式简化了分布式系统基础设施 ...

  9. 多个切点 boot spring_全网独家Spring/Cloud/MVC/Boot,脑图+面试+进阶,就问你服不服?...

    近期搜刮了一些Spring全家桶系列的思维脑图.经典面试题和进阶学习的PDF笔记(非常nice),Spring+SpringCloud+SpringMVC+SpringBoot,一个都没落下全都有!一 ...

最新文章

  1. mybatis generator用法
  2. 阿德:我在去哪儿干了些什么,3个月业绩400%提升
  3. zabbix_fetion_alter
  4. Backbone - create model的实现原理
  5. 操作excel的一些方法
  6. 给出TREE_INSERT过程的非递归版本(算法导论第三版12.3-1)
  7. 【渝粤题库】国家开放大学2021春3896人文英语1题目
  8. python 除法取模_跟我一起学python | 探究05
  9. Oracle Golden Gate - 概念和机制
  10. groupdel 删除组_如何在Linux中删除组– groupdel命令
  11. C++ 类的前向声明
  12. HarmonyOS竞赛,2021全国大学生物联网设计竞赛正式开赛,全新HarmonyOS赛题引关注...
  13. 移动端APP测试概要
  14. 360深度实践:Flink 与 Storm 协议级对比
  15. 多体系统的量子理论,多体系统的量子场论
  16. Mac版的axure原型设计软件
  17. 战神网络 战神引擎 手游研究院 获取该区补丁失败 如何解决
  18. 在matlab中使用dsolve函数解范德波尔二阶微分方程
  19. 让代码审查扮演更好的角色
  20. 真·稳如狗:中国团队推出四足机器人,对标波士顿动力

热门文章

  1. 码云克隆项目到IntelliJ IDEA中
  2. CSDN如何快速更换皮肤
  3. python密码传参有特殊字符如何解决_am start的总结,-d参数的总结,以及python中传递内容包含中文及特殊字符的解决方案...
  4. python的枚举函数_enumerate()函数~~返回一个枚举对象
  5. python微信图标制作_Python十分钟制作属于你自己的个性logo
  6. python mongodb_python实现mongodb的增删改查
  7. python怎么导入csv文件数据-机器学习Python实践——数据导入(CSV)
  8. mysql查询单个员工信息_PHP+MySQL实现模糊查询员工信息功能示例
  9. java 乱码 号处理器_java处理中日文字符串的乱码问题
  10. python 抠图源码_别再自己抠图了,Python用5行代码实现批量抠图