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指向的類的具體方法。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM