zoukankan      html  css  js  c++  java
  • SpringCloud Feign异常处理

    概述

    网络请求时,可能会出现以下异常请求,如果想在发生异常的情况下使系统可用,就要进行容错处理。发生异常的情况可能有网络请求超时、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);
    }
    @Component
    public class FileRestServiceFallback implements IFileRestService {
    
        @Override
        public BosCommonResponse uploadFile(String databaseKey,MultipartFile file, String url, String name,String type){
            return BosCommonResponse.failure();
        }
    }

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

  • 相关阅读:
    vim编辑器基本操作及文件权限,sudo命令等介绍
    centos的基本命令04
    linux的sed(增删改查)使用方法
    rm: cannot remove `xxx’: Operation not permitted问题的处理方案
    迅为iTOP-4412物联网开发板入门学习高手进阶项目开发超树莓派
    迅为I.MX6Q开发板配不同分辨率不同尺寸液晶屏幕
    iTOP-4412开发板-实战教程-ssh服务器移植到arm开发板
    iTOP-4412开发板全新升级支持4G全网通模块
    迅为iMX6UL开发板低功耗高能效开发平台
    iTOP-4418/6818开发板支持双屏异显,双屏同显
  • 原文地址:https://www.cnblogs.com/SChenqi/p/10515610.html
Copyright © 2011-2022 走看看