FallbackFactory使用
概述
在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使用相关推荐
- SpringCloud(第 017 篇)电影微服务接入Feign,添加 fallbackFactory 属性来触发请求进行容灾降级...
2019独角兽企业重金招聘Python工程师标准>>> SpringCloud(第 017 篇)电影微服务接入Feign,添加 fallbackFactory 属性来触发请求进行容灾 ...
- FallbackFactory启动的时候抛出异常
在Hystrix做熔断的时候,开始用的是FallBack,后来为了找出为啥exception,然后就用了FallBackFactory. 但是奇怪的是,一起动就抛出异常,真的是百思不得骑姐,错了其解. ...
- No fallbackFactory instance of type class com.chongyou.system.api.factory.RemoteUserFallbackFactory
记录一下自己的开发报错之路 问题描述 在使用微服务之间的服务调用,并且实现了降级处理的.编译时报错 No fallbackFactory instance of type class com.chon ...
- openfeign接口启动报错: is not assignable to interface feign.hystrix.FallbackFactory
openfeign接口启动报错: is not assignable to interface feign.hystrix.FallbackFactory 报错详情: org.springframew ...
- No fallbackFactory instance of type class com.ruoyi.system.api.factory.RemoteLogFallbackFactory foun
报错找不到这个类(托底类) /*** 日志服务降级处理* * @author ruoyi*/ @Component public class RemoteLogFallbackFactory impl ...
- fagin 启动报错 Fallback/fallbackFactory
Fallback/fallbackFactory of type class is not assignable to interface feign.hystrix.FallbackFactory ...
- @FeignClient使用详解 name, url,decode404, value,fallbackFactory等。spring cloud 远程接口实现全流程。
@FeignClient标签的常用属性如下: name:指定FeignClient的名称,如果项目使用了Ribbon,name属性会作为微服务的名称,用于服务发现 value:指定FeignClien ...
- feign常用俩种降级方式Fallback和FallbackFactory。
一.fallbackFactory 推荐:可以捕获异常信息并返回默认降级结果.可以打印堆栈信息. 二. fallback 不推荐:不能捕获异常打印堆栈信息,不利于问题排查. 1. @FeignClie ...
- No fallbackFactory instance of type class com.neuray.oa.security.service.system.api.factory.RemoteDe
feign服务调用,项目启动报错: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating b ...
- Feign的调用报错时,降级处理方式,fallBackFactory
Feign的调用报错时,降级处理fallBackFactory 项目结构: 代码: remoteCdsService package com.gsafety.framework.api;import ...
最新文章
- 机器学习虽好,也要看什么场合
- News Break!沈向洋投资并出任美国版“今日头条”董事长
- python怎么写出来的_如何写出优雅又地道的Python代码?【转载】
- Python pytest框架之@pytest.fixture()和conftest详解
- 【CF1152F】Neko Rules the Catniverse(动态规划)
- 各种门锁的内部结构图_逃生门锁,我们的生命之锁!
- 【渝粤教育】国家开放大学2018年秋季 1039t高级财务会计 参考试题
- 进击的雨燕------------错误处理
- 通过Cadence学拉扎维的第0天-工艺库的导入+共源电路仿真示例
- 火山图——直观的特征差异可视化
- 使用liteide开发go问题收集
- ACM144-小柯的烦恼zy
- 修改域名指向的服务器,让域名指向服务器
- nodejs之utility,crypto使用
- 2017最新安卓版UI设计规范篇
- 如何将视频上传到网站服务器,如何将本地视频上传到云服务器
- Espresso环境搭建及其基本使用
- 程序员如何选择未来的职业路线
- idea maven打包war包项目
- ue4-摄像机动画Matinee(多图慎入)
热门文章
- webRTC音频NetEq之音频包插入缓冲抖动BUFF处理过程
- D语言使用dub编译ms-coff文件
- 阿里云要引领数据库市场?这话没毛病
- python打开读取文件内容
- A - ConneR and the A.R.C. Markland-N
- 职场小白手收藏篇:职场应聘的面试技巧
- 微信小助手都有什么功能?WeChatPlugin mac最新版使用教程
- L1-044 稳赢 (15 分)(JAVA)
- JEESZ分布式框架简介---技术介绍文档
- 蓝牙与计算机无法建立连接,电脑蓝牙无法建立连接是为什么呀?