# 开启断路器

  enabled: true

  断路器要主动开启,服务调用失败时才会熔断

  此处有一个坑,把此配置写到 application.yml 中熔断不会生效

  application.properties 和 bootstrap.yml 二选一就行

  服务工程 A - controller 前端控制器(提供服务)

  package com.zwc.a.controller;

  import org.springframework.beans.factory.annotation.Value;

  import org.springframework.web.bind.annotation.RequestMapping;

  import org.springframework.web.bind.annotation.RestController;

  /*

  * @ClassName ASayHelloController

  * @Desc TODO Say Hello

  * @Date 2019/5/20 23:24

  * @Version 1.0

  */

  @RestController

  public class ASayHelloController {

  /*

  * @ClassName ASayHelloController

  * @Desc TODO 读取配置文件中的端口

  * @Date 2019/5/20 23:24

  * @Version 1.0

  */

  @Value("${server.port}")

  private String port;

  /*

  * @ClassName ASayHelloController

  * @Desc TODO Say Hello

  * @Date 2019/5/20 23:24

  * @Version 1.0

  */

  @RequestMapping("/a")

  public String a(){

  return "Hello!I'm a. port:" + port;

  }

  }

  提供一个服务:输出 Hello 和端口

  服务工程 A - 服务调用

  package com.zwc.a.api.feign;

  import com.zwc.a.api.impl.FeignApiFallBack;

  import org.springframework.cloud.openfeign.FeignClient;

  import org.springframework.web.bind.annotation.RequestMapping;

  /*

  * @ClassName FeignApi

  * @Desc TODO 使用 Feign 调用 b - 接口

  * @Date 2019/5/20 23:21

  * @Version 1.0

  */

  @FeignClient(value = "hystrix-b" , fallback = FeignApiFallBack.class)

  public interface FeignApi {

  /*

  * @ClassName FeignApi

  * @Desc TODO 通过 hystrix-b 服务名调用 b() 方法

  * @Date 2019/5/20 23:21

  * @Version 1.0

  */

  @RequestMapping("/b")

  String b();

  }

  通过 @FeignClient 注解中 value = "hystrix-b" 来指定调用哪个服务

  hystrix-b 就是提供者的 spring.application.name:应用名称

  通过 @FeignClient 注解中 fallback = FeignApiFallBack.class 来指定熔断时调用的方法

  FeignApiFallBack 就是此类(FeignApi)的实现类,对应的实现方法就是此类的熔断时调用的方法

  b():此方法是 B 工程中提供的服务,在这里定义成接口

  注意要与提供者具有相同返回值,相同方法名以及相同参数

  服务工程 A - Fallback(FeignApiFallBack)

  package com.zwc.a.api.impl;

  import com.zwc.a.api.feign.FeignApi;

  import org.springframework.stereotype.Component;

  /*

  * @ClassName FeignApi

  * @Desc TODO fallback

  * @Date 2019/5/20 23:21

  * @Version 1.0

  */

  @Component

  public class FeignApiFallBack implements FeignApi {

  /*

  * @ClassName FeignApiFallBack

  * @Desc TODO 调用 hystrix-b 服务中的 b() 方法失败时执行

  * @Date 2019/5/20 23:31

  * @Version 1.0

  */

  @Override

  public String b() {

  return "Hello!aUseB fail";

  }

  }

  使用 @Component 注解把此类交给 Spring 管理

  实现了 FeignApi 接口,提供熔断时对应的方法

  服务工程 A - controller 前端控制器(消费服务)

  package com.zwc.a.controller;

  import com.zwc.a.api.feign.FeignApi;

  import org.springframework.beans.factory.annotation.Autowired;

  import org.springframework.web.bind.annotation.RequestMapping;

  import org.springframework.web.bind.annotation.RestController;

  /*

  * @ClassName AUseBFeignController

  * @Desc TODO 使用 Feign 调用 b - 前端控制器

  * @Date 2019/5/20 23:23

  * @Version 1.0

  */

  @RestController

  public class AUseBFeignController {

  @Autowired(required = false)

  private FeignApi feignApi;

  /*

  * @ClassName FeignController

  * @Desc TODO 通过 hystrix-b 服务名调用 b() 方法

  * @Date 2019/5/20 23:13

  * @Version 1.0

  */

  @RequestMapping("/aUseB")

  public String aUseB(){

  return feignApi.b();

  }

  }

  使用 @Autowired 注解装配 Bean,通过此 Bean 中的方法调用服务

  此类对外暴露接口,调用的实则是提供者的服务

  服务工程 A - 启动类

  package com.zwc;

  import org.springframework.boot.SpringApplication;

  import org.springframework.boot.autoconfigure.SpringBootApplication;

  import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

  import org.springframework.cloud.openfeign.EnableFeignClients;

  @SpringBootApplication

  @EnableEurekaClient

  @EnableFeignClients

  public class SpringcloudHystrixAServiceCoreApplication {

  public static void main(String[] args) {

  SpringApplication.run(SpringcloudHystrixAServiceCoreApplication.class, args);

  }

  }无锡妇科医院 http://www.bhnnk120.com/

  添加 @EnableEurekaClient 注解表示此工程可以向注册中心提供服务

  添加 @EnableFeignClients 注解表示开启 Feign 功能进行远程调用

  服务工程 A - 启动项目

  1. 项目启动成功后访问:http://localhost:8090/a (调用自己的服务)

  2. 输出内容:'Hello!I'm a. port:8090'

  3. 刷新 http://localhost:8761/(注册中心)可以看到服务已经被注册进来了

  4. 访问地址:http://localhost:8090/aUseB (调用 B 工程的服务)

  5. 输出内容:'Hello!aUseB fail' (此时因为 B 工程还未启动,所以调用了 fallback 中的方法)

  6. 启动服务工程 B,项目启动成功后再次访问:http://localhost:8090/aUseB (调用 B 工程的服务)

  7. 输出内容:'Hello!I'm b. port:8091' (如果还未调用成功,等待一会再刷新试试)

  8. 此时就证明熔断成功

  9. 访问地址:http://localhost:8091/b (调用自己的服务)

  10. 输出内容:'Hello!I'm b. port:8091'

  11. 再次刷新 http://localhost:8761/(注册中心),发现 B 工程服务也注册进来了

  service 工程 - 项目结构

  把多工程项目使用 IntelliJ IDEA 打开

  把项目从 GitHub 中下载到你的本地

  打开 IntelliJ IDEA

  点击 File -> Open

  打开你下载到本地的项目目录

  springcloud-hystrix -> springcloud-hystrix-service(选择打开此工程)

  打开 service 工程后

  再次点击 File -> Project Structrue

  选择 Modules,点击 '+' 符号

  点击 Import Module

  还是打开你下载到本地的项目目录

  springcloud-hystrix -> springcloud-hystrix-commons -> pom.xml

  点击 OK

  点击 Next,Finish

  点击 Apply,OK

SpringCloud之熔断器Hystrix(二)相关推荐

  1. SpringCloud使用熔断器Hystrix

    文章目录 1. 配置 1.1 远程调用配置 1.2 测试远程调用 1.3 使用熔断器Hystrix 1.4 测试熔断器 1. 配置 Feign是简化Java HTTP客户端开发的工具(java-to- ...

  2. SpringCloud 组件 熔断器Hystrix

    Hystrix 的中文名字是"豪猪",豪猪是满身长满了刺,能够保护自己不受天敌的伤害,代表了一种防御机制,Hystrix 在 SpringCloud 中负责服务熔断和服务降级的作用 ...

  3. springcloud 熔断器Hystrix的具体使用

    springcloud 熔断器Hystrix的具体使用 说起springcloud熔断让我想起了去年股市中的熔断,多次痛的领悟,随意实施的熔断对整个系统的影响是灾难性的,好了接下来我们还是说正事. 熔 ...

  4. SpringCloud组件之熔断器Hystrix的理论与实操

    本篇博客主要讲解Hystrix的理论以及实现. 首先先来讲熔断器Hystrix的理论以及两种实现方法. 熔断器理论 为什么使用熔断器 分布式系统面临的问题:雪崩效应 在微服务架构中通常会有多个服务层调 ...

  5. [菜鸟SpringCloud实战入门]第五章:熔断器Hystrix的使用 + 可视化监控Hystrix Dashboard和Turbine

    前言 欢迎来到菜鸟SpringCloud实战入门系列(SpringCloudForNoob),该系列通过层层递进的实战视角,来一步步学习和理解SpringCloud. 本系列适合有一定Java以及Sp ...

  6. 一起来学Spring Cloud | 第五章:熔断器 ( Hystrix)

    在微服务项目中,一个系统可以分割成很多个不同的服务模块,不同模块之间我们通常需要进行相互调用.springcloud中可以使用RestTemplate+Ribbon和Feign来调用(工作中基本都是使 ...

  7. 《深入理解 Spring Cloud 与微服务构建》第九章 熔断器 Hystrix

    <深入理解 Spring Cloud 与微服务构建>第九章 熔断器 Hystrix 文章目录 <深入理解 Spring Cloud 与微服务构建>第九章 熔断器 Hystrix ...

  8. 关于熔断器Hystrix替代方案的调研报告

    关于熔断器Hystrix替代方案的调研报告 一.背景 Netflix宣布停止Hystrix熔断器的开发,目前进入了维护模式.同时,也指出了Hystrix 1.5.18版本足够满足现阶段的应用(详细请参 ...

  9. 第六章 服务熔断器Hystrix

    6-1.Hystrix是什么? ​   在微服务的框架中,我们是将一个单体应用拆分成多个服务单元,各个服务单元之间通过注册中心彼此发现和消费对方提供的服务,每个服务器单元都是单独部署,在各自服务的运行 ...

  10. 熔断器hystrix的使用

    一.restTemplate+ribbon使用hystrix 1.引入依赖 <dependency><groupId>org.springframework.cloud< ...

最新文章

  1. 相较神经网络,大名鼎鼎的傅里叶变换,为何没有一统函数逼近器?答案在这...
  2. java inputstream 回退_系统学习 Java IO (十)----回退流 PushbackInputStream
  3. 6. Qt 信号与信号槽(8)实例分析
  4. 搭建认证服务器 - Spring Security Oauth2.0 集成 Jwt 之 【授权码认证流程】 总结
  5. 机器学习理论入门:第二章 经典监督学习算法-决策树
  6. iOS版微信6.3.19更新发朋友圈可选可见范围
  7. 10.11 安装pod
  8. hdu 3177贪心
  9. [下载]青岛交通旅游地图[download]
  10. php MySQLDB类
  11. 机器人学导论原书第三版
  12. 数据结构视频教程 严蔚敏
  13. 记一次爆破六位数密码(图书馆系统登录)
  14. MSVCR100.dll丢失
  15. jQuery 效果 - 淡入淡出,fadeIn,fadeOut,fadeToggle的使用
  16. UnityVR-初识Unity-实践-制作一个工程场景
  17. Deepin安装dotnet
  18. 群晖3617可以有几个网卡_Nvme pcie千兆有线网卡
  19. H3Cmsr830 l2tp二层隧道协议配置详解(host-R版)
  20. CANoe——CAPL(Message)

热门文章

  1. 基于Tiny6410的LCD与一线触屏移植
  2. 一种结构和纹理感知 Retinex 模型 (2020 TIP) (1 of 2)
  3. 回溯法——利用解空间树解决0-1背包问题
  4. 为什么人工智能难以达到儿童语言水平?
  5. 2018年上半年信息系统项目管理师考试真题附答案解析(1)
  6. P18利用5次shift漏洞破解win7密码
  7. 银河战舰服务器无响应,银河战舰帝国起源
  8. idea无法下载源码 Sources not found for: org.springframework:spring-context:5.1.5.RELEAS
  9. 铁路订票系统的简单设计(转)
  10. msg1500说明书_拆解电信定制 瑞斯达康MSG1500 双频路由器