使用@FeignClient中的fallback屬性處理介面呼叫異常問題

品书读茶發表於2024-03-13

說明

當使用feign遠端呼叫介面是,如果介面返回異常或者超時時,我們可以統一返回異常資訊,這樣呼叫者就不用再顯式的try-catch處理異常了

開啟介面fallback處理

想要使用fallback 處理介面異常須在配置檔案開啟

feign:
  hystrix:
    enabled: true

定義feign介面

在@FeignClient上加屬性fallback,並將自定義的fallback類賦值給fallback

@FeignClient(name = "stockFeign", url = "http://stock-center.qd-aliyun-test-internal.haier.net", fallback = StockFeignFallback.class)
public interface StockFeign {

    @PostMapping("/api/v1/transferorder/queryBatchImportTransferOrder11")
    FeignResultDto<Page<TransferImportListOutDto>> queryBatchTransferOrder(@RequestBody PageQueryDto<TransferImportListInDto> pageQueryDto);

}

定義fallback類

說明:定義類需要被spring管理,需要實現feign介面

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.test.boot.param.FeignResultDto;
import com.test.boot.param.PageQueryDto;
import com.test.boot.param.TransferImportListInDto;
import com.test.boot.param.TransferImportListOutDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

@Slf4j
@Component
public class StockFeignFallback implements StockFeign {
    
    public FeignResultDto<Page<TransferImportListOutDto>> queryBatchTransferOrder(PageQueryDto<TransferImportListInDto> pageQueryDto) {
        log.info("介面異常=========");
        return new FeignResultDto<>(500, "介面異常", null);
    }
}

相關文章