OpenFeign 实践之 FeignClient 超时设置 |
您所在的位置:网站首页 › win10F9设置 › OpenFeign 实践之 FeignClient 超时设置 |
Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。 一、问题描述:如果我们线上有一些同步请求的接口比如: 1、批量发邮件 2、一次执行上万的数据处理 3、同步调用支付接口 如果我们有以上的操作可能出现下面的异常 其实这里有两种解决方案: 由于被调用方处理的时间比较长, 调用方可以选择增加等待时间。 修改被调用方的处理逻辑,优化设计。 修改调用放的处理逻辑,修改直接调用为,隐式调用。问题不在发散,我就想做一条咸鱼,保证服务不报错,我们就直接改 feign 的等待时间即可 二、解决方法:在解决方法的部分,我们还是先贴出部分已有的代码和逻辑,来回应一下当前的场景。 部分代码1、Feign 接口定义如下: @FeignClient(name = "payment-service", path = "/payment") public interface PaymentFeign { @PostMapping("/create") PaymentVo create(@RequestBody @Validated PaymentDto paymentDto); } 复制代码2、调用代码如下: @Autowired private PaymentFeign paymentFeign; @GetMapping("/create") public OrderVo create(@Validated OrderDto orderDto) { log.info("uri:/order/create lang:{}", LocaleContextHolder.getLocale().getLanguage()); // 忽略逻辑代码 N 行 paymentFeign.create(paymentDto); log.info("uri:/order/create paymentFegin.create cost: {} ms", System.currentTimeMillis() - start); return orderVo; } 复制代码3、feign 超时配置 feign: client: config: default: # 日志级别 loggerLevel: full # 超时设置 1.5 秒超时 connectTimeout: 1500 readTimeout: 1500 # 断路器 circuitbreaker: enabled: true 复制代码一句话概括上面的代码:我在 xxx/create 接口中调用了, /payment/create 且我设置了, feign 的超时时间为 1.5s。但是由于 /payment/create 调用过程中超时,返回了 TimeOut。 解决方案方案一: 增加 feign 的默认超时时间,为 5s feign: client: config: default: # 日志级别 loggerLevel: full # 超时设置 5 秒超时 connectTimeout: 5000 readTimeout: 5000 # 断路器 circuitbreaker: enabled: true 复制代码方案二: 指定feign 接口的 contextId 设置当前 feign 的超时时间为 5s. feign: client: config: default: # 日志级别 loggerLevel: full # 超时设置 connectTimeout: 1500 readTimeout: 1500 payment-core: connectTimeout: 5000 readTimeout: 5000 # 断路器 circuitbreaker: enabled: true 复制代码为 PaymentFeign 设置上 contextId 属性 @FeignClient(name = "payment-service", contextId = "payment-core", path = "/payment") public interface PaymentFeign { @PostMapping("/create") PaymentVo create(@RequestBody @Validated PaymentDto paymentDto); } 复制代码这样做,我们就可以减少影响,减少下游的影响。 三、总结:还有一点我门需要注意,该配置不支持热更新,如果我们修改超时时间过后,需要重启服务。 如果我们不重启的,可以修改配置, 实现 feign.client.refresh-enabled=true 复制代码参考地址资料: spring-cloud-openfeign |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |