博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringCloud Feign异常处理
阅读量:5052 次
发布时间:2019-06-12

本文共 1870 字,大约阅读时间需要 6 分钟。

概述

网络请求时,可能会出现以下异常请求,如果想在发生异常的情况下使系统可用,就要进行容错处理。发生异常的情况可能有网络请求超时、url参数错误等等。

Spring Cloud Feign就是通过Fallback实现的,有以下两种方式:

1、@FeignClient.fallback = UserFeignFallback.class 指定一个实现Feign接口的类,当出现异常时调用该类中相应的方法

2、@FeignClient.fallbackFactory = UserFeignFactory.class 指定一个实现FallbackFactory<T>工厂接口的类

@FeignClient注解参数

name:指定FeignClient的名称

url:一般用于调试,可以手动指定@FeignClient的调用地址

configuration:Feign配置,可以实现自定义属性

fallback:自定义容错处理类,当调用远程接口失败或者超时时,会调用对应接口的容错逻辑,fallback指定的类必须实现@FeignClient标记的接口

path:定义当前FeignClient的统一前缀

实例

@FeignClient(name = "bos3dengine", path = "/api", fallback = FileRestServiceFallback.class,configuration = FeignMultipartSupportConfig.class)public interface IFileRestService {    /**     * 上传模型文件     *      * @param databaseKey     *            数据库key     * @param file     *            文件对象     * @param url     *            文件下载地址     * @param name     *            模型名称     * @param type     *            模型类型     * @return     */    @RequestMapping(method = RequestMethod.POST, value="/{databaseKey}/files",consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)    public BosCommonResponse uploadFile(@PathVariable(value = "databaseKey") String databaseKey,            @RequestPart(value = "file", required = false) MultipartFile file,            @RequestParam(value = "url", required = false) String url,            @RequestParam(value = "name", required = false) String name,             @RequestParam(value = "type", required = false) String type); }
@Componentpublic class FileRestServiceFallback implements IFileRestService {    @Override    public BosCommonResponse uploadFile(String databaseKey,MultipartFile file, String url, String name,String type){        return BosCommonResponse.failure();    }}

当在实现了IFileRestService接口的Controller类中发生熔断,会调用fallback指向的类的具体方法。

 

转载于:https://www.cnblogs.com/SChenqi/p/10515610.html

你可能感兴趣的文章
学习网址
查看>>
前端表格插件datatables
查看>>
内部类
查看>>
树链剖分入门
查看>>
图解算法时间复杂度
查看>>
UI_搭建MVC
查看>>
一个样例看清楚JQuery子元素选择器children()和find()的差别
查看>>
代码实现导航栏分割线
查看>>
Windows Phone开发(7):当好总舵主 转:http://blog.csdn.net/tcjiaan/article/details/7281421...
查看>>
VS 2010打开设计器出现错误
查看>>
SQLServer 镜像功能完全实现
查看>>
Vue-详解设置路由导航的两种方法
查看>>
一个mysql主从复制的配置案例
查看>>
大数据学习系列(8)-- WordCount+Block+Split+Shuffle+Map+Reduce技术详解
查看>>
dvwa网络渗透测试环境的搭建
查看>>
Win8 安装VS2012 和 Sql Server失败问题
查看>>
过点(2,4)作一直线在第一象限与两轴围成三角形,问三角形面积的最小值?...
查看>>
java aes CBC的填充方式发现
查看>>
使用ionic cordova build android --release --prod命令打包报有如下错误及解决方法
查看>>
BZOJ 2338 HNOI2011 数矩形 计算几何
查看>>