說明
當使用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);
}
}