使用@FeignClient中的fallback属性处理接口调用异常问题
说明
当使用feign远程调用接口是,如果接口返回异常或者超时时,我们可以统一返回异常信息,这样调用者就不用再显式的try-catch处理异常了
开启接口fallback处理
想要使用fallback 处理接口异常须在配置文件开启
feign:
hystrix:
enabled: true
定义feign接口
在@FeignClient上加属性fallback,并将自定义的fallback类赋值给fallback
@FeignClient(name = "stockFeign", url = "http://stock-center.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);
}
}
高版本的openfeign 参考
纸上得来终觉浅,绝知此事要躬行。