Spring Cloud全解析:服务调用之Feign显示fallback异常原因



Feign显示fallback异常原因

我在最一开始使用Feign的时候,是使用FallBack类去实现的FeignClient接口,就像这样

@FeignClient(name = "SPRINGCLOUD2-PROVIDER",contextId = "DeptClient",
        fallback = DeptClient.DeptClientFallBack.class)
public interface DeptClient {

    @GetMapping(value = "/dept/get/{id}")
    CommonResult<Dept> get(@PathVariable("id") long id);

    @GetMapping("/timeout")
    String timeout();
    
    @Component
    class DeptClientFallBack implements DeptClient{

        @Override
        public CommonResult<Dept> get(long id) {
            return null;
        }

        @Override
        public String timeout() {
            return null;
        }
    }
}

但是这样的话,我发现没有办法查看是因为什么原因造成的fallback呢,这种方法肯定是不行的

然后发现@FeignClient注解中有一个属性是fallbackFactory,看着这个是有一个Throwable参数的,拿来试一试

T create(Throwable cause);

说干就干

@FeignClient(name = "SPRINGCLOUD2-PROVIDER",contextId = "DeptClient",
        fallbackFactory = DeptClientFallBackFactory.class)
public interface DeptClient {

    @GetMapping(value = "/dept/get/{id}")
    CommonResult<Dept> get(@PathVariable("id") long id);

    @GetMapping("/timeout")
    String timeout();
}

@Component
public class DeptClientFallBackFactory implements FallbackFactory<DeptClient> {

    @Override
    public DeptClient create(Throwable throwable) {
        return new DeptClient() {
            @Override
            public CommonResult<Dept> get(long id) {
                System.out.println("fallback 原因:"+throwable.getMessage());
                CommonResult<Dept> result = new CommonResult<>();
                result.isOk();
                return result;
            }

            @Override
            public String timeout() {
                return null;
            }
        };
    }
}

可以拿到异常信息了

参考文献

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拾光师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值