概述

在FeignClient中,可以通过制定fallback,实现在服务不可用时自动调用fallback指定定的处理方法。
启动类

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

接口类,绑定FallbackFactory类

@FeignClient(name = "file-center", fallbackFactory = FileServiceFallbackFactory.class, decode404 = true)
public interface FileService {@GetMapping(value = "/files", params = "ids")List<FileInfo> findFiles(@RequestParam("ids") List<String> ids);
}

只需要加入decode404 = true这一个参数,Feign对于2XX和404 ,都不会走Fallback。
排除404,已经基本上够用,如果想把409、400等status也加到例外中,可以重写一下Feign的errorDecoder。

@Slf4j
public class FileServiceFallbackFactory implements FallbackFactory<FileService> {@Overridepublic FileService create(Throwable throwable) {return new FileService() {@Overridepublic List<FileInfo> findFiles(List<String> ids) {log.error("获取文件信息异常:{}", ids, throwable);return new ArrayList<>();}};}
}

对应的contractor代码:

// 服务降级:若当前处理器方法发生异常,则执行fallbackMethod属性指定的方法
@HystrixCommand(fallbackMethod = "findFilesDefault")
@GetMapping("/files")
public List<FileInfo> findFiles(@RequestParam List<String> ids) {return fileService.findList(ids);
}/*** 记得@PathVariable一定要设置括号里面的value,否则报错PathVariable annotation was empty on param 0.*/
@GetMapping("/download/{fileName}")
String downloadFile(@PathVariable("fileName") String fileName);public List<FileInfo> findFilesDefault(@RequestParam List<String> ids) {return fileService.findList(ids);
}

上面配置两种服务降级形式,一种是类级别的FallbackFactory,一种是方法级别的FallbackMethod,FallbackFactory优先级高于FallbackMethod,即同时存在时不会走FallbackMethod。

参考

Hystrix FallbackFactory服务降级

FallbackFactory使用相关推荐

  1. SpringCloud(第 017 篇)电影微服务接入Feign,添加 fallbackFactory 属性来触发请求进行容灾降级...

    2019独角兽企业重金招聘Python工程师标准>>> SpringCloud(第 017 篇)电影微服务接入Feign,添加 fallbackFactory 属性来触发请求进行容灾 ...

  2. FallbackFactory启动的时候抛出异常

    在Hystrix做熔断的时候,开始用的是FallBack,后来为了找出为啥exception,然后就用了FallBackFactory. 但是奇怪的是,一起动就抛出异常,真的是百思不得骑姐,错了其解. ...

  3. No fallbackFactory instance of type class com.chongyou.system.api.factory.RemoteUserFallbackFactory

    记录一下自己的开发报错之路 问题描述 在使用微服务之间的服务调用,并且实现了降级处理的.编译时报错 No fallbackFactory instance of type class com.chon ...

  4. openfeign接口启动报错: is not assignable to interface feign.hystrix.FallbackFactory

    openfeign接口启动报错: is not assignable to interface feign.hystrix.FallbackFactory 报错详情: org.springframew ...

  5. No fallbackFactory instance of type class com.ruoyi.system.api.factory.RemoteLogFallbackFactory foun

    报错找不到这个类(托底类) /*** 日志服务降级处理* * @author ruoyi*/ @Component public class RemoteLogFallbackFactory impl ...

  6. fagin 启动报错 Fallback/fallbackFactory

    Fallback/fallbackFactory of type class  is not assignable to interface feign.hystrix.FallbackFactory ...

  7. @FeignClient使用详解 name, url,decode404, value,fallbackFactory等。spring cloud 远程接口实现全流程。

    @FeignClient标签的常用属性如下: name:指定FeignClient的名称,如果项目使用了Ribbon,name属性会作为微服务的名称,用于服务发现 value:指定FeignClien ...

  8. feign常用俩种降级方式Fallback和FallbackFactory。

    一.fallbackFactory 推荐:可以捕获异常信息并返回默认降级结果.可以打印堆栈信息. 二. fallback 不推荐:不能捕获异常打印堆栈信息,不利于问题排查. 1. @FeignClie ...

  9. No fallbackFactory instance of type class com.neuray.oa.security.service.system.api.factory.RemoteDe

    feign服务调用,项目启动报错: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating b ...

  10. Feign的调用报错时,降级处理方式,fallBackFactory

    Feign的调用报错时,降级处理fallBackFactory 项目结构: 代码: remoteCdsService package com.gsafety.framework.api;import ...

最新文章

  1. 机器学习虽好,也要看什么场合
  2. News Break!沈向洋投资并出任美国版“今日头条”董事长
  3. python怎么写出来的_如何写出优雅又地道的Python代码?【转载】
  4. Python pytest框架之@pytest.fixture()和conftest详解
  5. 【CF1152F】Neko Rules the Catniverse(动态规划)
  6. 各种门锁的内部结构图_逃生门锁,我们的生命之锁!
  7. 【渝粤教育】国家开放大学2018年秋季 1039t高级财务会计 参考试题
  8. 进击的雨燕------------错误处理
  9. 通过Cadence学拉扎维的第0天-工艺库的导入+共源电路仿真示例
  10. 火山图——直观的特征差异可视化
  11. 使用liteide开发go问题收集
  12. ACM144-小柯的烦恼zy
  13. 修改域名指向的服务器,让域名指向服务器
  14. nodejs之utility,crypto使用
  15. 2017最新安卓版UI设计规范篇
  16. 如何将视频上传到网站服务器,如何将本地视频上传到云服务器
  17. Espresso环境搭建及其基本使用
  18. 程序员如何选择未来的职业路线
  19. idea maven打包war包项目
  20. ue4-摄像机动画Matinee(多图慎入)

热门文章

  1. webRTC音频NetEq之音频包插入缓冲抖动BUFF处理过程
  2. D语言使用dub编译ms-coff文件
  3. 阿里云要引领数据库市场?这话没毛病
  4. python打开读取文件内容
  5. A - ConneR and the A.R.C. Markland-N
  6. 职场小白手收藏篇:职场应聘的面试技巧
  7. 微信小助手都有什么功能?WeChatPlugin mac最新版使用教程
  8. L1-044 稳赢 (15 分)(JAVA)
  9. JEESZ分布式框架简介---技术介绍文档
  10. 蓝牙与计算机无法建立连接,电脑蓝牙无法建立连接是为什么呀?