文档章节

springCloud学习笔记系列(3)-服务容错保护:Spring Cloud Feign

快乐的小火柴
 快乐的小火柴
发布于 11/14 17:12
字数 531
阅读 12
收藏 3

Feign包含了Ribbon和Hystrix,这个在实战中才慢慢体会到它的意义,所谓的包含并不是Feign的jar包包含有Ribbon和Hystrix的jar包这种物理上的包含,而是Feign的功能包含了其他两者的功能这种逻辑上的包含。简言之:Feign能干Ribbon和Hystrix的事情,但是要用Ribbon和Hystrix自带的注解必须要引入相应的jar包才可以。

1.引入依赖

<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-feign -->

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-feign</artifactId>

<version>1.4.6.RELEASE</version>

</dependency>

2.配置文件中开启服务

feign.hystrix.enabled=true

3.启动类注解开启

@EnableFeignClients

public class DemoFeignApplication {

public static void main(String[] args) {

SpringApplication.run(DemoFeignApplication.class, args);

}

}

4.feign 是基于接口的注解方式实现的新建一个接口

@FeignClient(value = "two-client",fallback = SchedualServiceHiHystric.class)

public interface UserService {

@RequestMapping("/home/indexd")

String getIndex();

}

FeignClient("two-client"")注解里eureka-client指的是提供服务的服务名

fallback 自定义异常类

5.异常类的实现

@Component

public class SchedualServiceHiHystric implements UserService {

@Override

public String getIndex() {

return "服务没有开启";

}

}

 6.请求controller

@Autowired

private UserService userService;

 

@RequestMapping("/index")

public String index(){

logger.info("index方法");

return userService.getIndex();

}

7.结果,当调用的服务端没有开启的时候

注释:1.maven的依赖一定要匹配,不然版本不匹配就会报很多无法预知的异常(本人遇到很坑)

2.配置贴出来供参考

<dependencies>

<!--EuekaClient客户端依赖-->

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-eureka</artifactId>

<version>1.3.6.RELEASE</version>

</dependency>

<!--Web端依赖-->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-feign</artifactId>

<version>1.3.6.RELEASE</version>

</dependency>

</dependencies>


#server.port=8013
#eureka.client.service-url.defaultZone=http://localhost:8000/eureka/
#spring.application.name=three-client
#feign.hystrix.enabled=true
server:
  port: 8013
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8000/eureka/
spring:
  application:
    name: three-client
feign:
  hystrix:
    enabled: true

hystrix:
  threadpool:
    default:
      coreSize: 500 #缺省为10
  stream:
    maxConcurrentConnections: 20
    bus:
      enabled: true
  command:
    default:
      execution:
        timeout:
          enabled: false
        isolation:
          thread:
            timeoutInMilliseconds: 60000
ribbon:
  eureka:
    enabled: true

 

© 著作权归作者所有

共有 人打赏支持
快乐的小火柴
粉丝 2
博文 26
码字总数 10031
作品 0
杭州
程序员
私信 提问
史上最简单的 SpringCloud 教程 | 终章

版权声明:本文为博主原创文章,欢迎转载,转载请注明作者、原文超链接 ,博主地址:http://blog.csdn.net/forezp。 https://blog.csdn.net/forezp/article/details/70148833 转载请标明出处...

方志朋
2017/04/12
0
0
史上最简单的 SpringCloud 教程

《史上最简单的 SpringCloud 教程》系列: 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka) 史上最简单的SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon) 史上最...

外星人et59
04/21
0
0
白话SpringCloud | 第五章:服务容错保护(Hystrix)

前言 前一章节,我们知道了如何利用+和的方式进行服务的调用。在微服务架构中,一个服务可能会调用很多的其他微服务应用,虽然做了多集群部署,但可能还会存在诸如网络原因或者服务提供者自身...

oKong
09/23
0
0
spring cloud 入门系列:总结

从我第一次接触Spring Cloud到现在已经有3个多月了,当时是在博客园里面注册了账号,并且看到很多文章都在谈论微服务,因此我就去了解了下,最终决定开始学习Spring Cloud。我在一款阅读App...

JAVA开发老菜鸟
07/20
0
0
【Spring Cloud】分布式必学springcloud(七)——声明式服务调用Feign

一、前言 在上篇博客中,小编带大家接触了断路器Hystrix,是不是很好玩。分布式服务之间有了Hystrix,可以很好的提高容错性能。 但是在实际开发中,项目中会有很多的服务间的调用,对于服务的...

kisscatforever
04/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

ubuntu美化记,-修改皮肤,安装工具。

事情由来 最近系统盘坏了,换了新SSD,也换了新版的ubuntu 18.04LTS;不得不说,ubuntu 的桌面搞的越来越漂亮了。 把调整过的zsh shell样式,截个图上来镇一下楼: 添加了对python virtuale...

janl
5分钟前
0
0
阿里云物联网边缘计算加载MQTT驱动

写在前面 本文在LinkEdge快速入门样例驱动的基础上,加载了MQTT订阅的客户端,使得边缘端容器可以通过MQTT获得外部数据。 1. 系统需求 物联网边缘计算平台,又名Link IoT Edge[1]。在物联网边...

阿里云云栖社区
6分钟前
0
0
错误: 找不到或无法加载主类

在IDEA的使用过程中,经常断掉服务或者重启服务,最近断掉服务重启时突然遇到了一个启动报错: 错误:找不到或无法加载主类 猜测:1,未能成功编译; 尝试:菜单---》Build---》Rebuild Pro...

安小乐
22分钟前
1
0
vue路由传参,刷新页面,引发的bug

最近遇到一个bug 通过vue路由跳转到页面, 然后接参控制(v-if ),成功显示 而刷新页面,显示失败。 苦苦地找了半天原因,打印参数发现正确,再打印下类型......,路由跳过来会保持传参时的...

hanbb
23分钟前
1
0
【58沈剑 架构师之路】InnoDB,select为啥会阻塞insert?

MySQL的InnoDB的细粒度行锁,是它最吸引人的特性之一。 但是,如《InnoDB,5项最佳实践》所述,如果查询没有命中索引,也将退化为表锁。 InnoDB的细粒度锁,是实现在索引记录上的。 一,Inn...

张锦飞
26分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部