关于配置feign: hystrix: enabled: true的一点小测试

前提:学习springCloud的hystrix的服务降级。这里8001的服务的提供者,80是消费者。 同时8001和80都配置了服务降级后出现的下列几种情况。

注意:1)这里使用了这个配置后:①就不会显示服务提供者的服务降级了。假设服务提供者(提供者设置的1500,消费者设置5000)超时报错了,80不会返回8001的降级服务返回,会直接返回80的降级服务。
在这里插入图片描述

②假设我们注释掉80的服务降级相关配置 会直接报错500 timeout 并且提示没有对应的fallback
在这里插入图片描述

2)如果没有这个配置,①当服务消费者这边没有超时(设置的5000),而提供者超时(设置的1500)的时候会返回8001的降级返回。
在这里插入图片描述

②当80设置1500,8001也是1500的时候返回的是80的服务降级。
在这里插入图片描述

③ 后续测试发现②是因为两个配置一样的时候,这里80直接超时了,因为8001调用整个过程可能使用了1600ms, 所以直接返回了80的降级服务了,开始以为会优先返回调用端的降级服务返回。后来发现:这里我把80设置为2800 8001设置还是1500,发现返回的是8001的降级服务
也就是这里80其实就没有超时了,是调用到了8001的降级服务结果,80这里就不算调用超时,所以返回
在这里插入图片描述

综上所述 我觉得这里还是不加这个配置好一点

后续学习知道这个配置是开启feign的hystrix 与这里其实没有太大的关系。

@FeignClient(value = “cloud-provider-hystrix-payment”, fallback = FeignHystrixFallBackService.class)
要使用这里这个fallback 就必须开启这个注解。 专门针对feign去调用接口的时候使用的。 而服务的消费方 调用这个接口的方法要使用服务降级的话,就是使用hystrix 本身,与这个注解并没有关系。

后续继续学习的时候发现:

1)使用这个配置时候

①这里没有返回8001报错是因为Hystrix默认的超时时间为1S ,当我们使用了这个配置过后,在使用Feign接口调用hystrix默认的超时时间久为1S了(而我们在方法上面配置的5000毫秒其实是整个方法的hystrix超时时间),所以上诉①是直接80这边调用对应接口1S过后就超时了,然后报错超时,启用了80 的降级服务。上诉②其实也是80这边1S过后就直接超时了,但是因为注释掉了80这边服务降级配置,所以直接返回了调用FeignHystrixOrderService.findTimeOut超时!!
也就是说这里要是我们在配置yml文件上加上hystrix:command:default:execution:isolation:thread:timeoutInMilliseconds:15000 过后。然超时时间延迟过后这里的①应该是返回8001的服务降级返回。经过测试也确实是这样。

2)没有使用这个配置的时候

这里因为没有启用该配置时候(Feign调用接口没有启用降级服务)hystrix的超时时间就是注解上的超时时间,也即使80整个方法调用的超时时间,所以这里的一切返回都是合理的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值