OpenFeign超时控制的使用

OpenFeign 超时控制是什么?

默认Feign 客户端只等待1秒钟,但是服务端处理需要超过1秒钟,导致Feign 客户端不想等待了,直接返回报错。

为了避免这样的情况,有时候我们需要设置Feign客户端的超时控制。

设置超时演示出错情况

服务提供方8001故意写暂停程序:
在这里插入图片描述

服务消费方80添加超时方法PaymentFeignService
在这里插入图片描述

服务消费方80添加超时方法OrderFeignController
在这里插入图片描述

测试
在这里插入图片描述

8001服务提供者调用超过3秒才返回数据,再来看80调用8001的方法

OpenFeign 只等待1秒,超过后报错:
在这里插入图片描述

在 yml 配置 进行控制
在这里插入图片描述

openFeign 内与 ribbon 整合了,支持负载均衡,它的超时控制也由最底层的 ribbon 进行控制,yml 添加配置:

#设置feign 客户端超时时间(openFeign默认支持ribbon)
ribbon:
#指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间
  ReadTimeout: 5000
#指的是建立连接后从服务器读取到可用资源所用的时间
  ConnectTimeout: 5000

重启80后 测试
在这里插入图片描述

数据在3秒后返回,没有报错。

OpenFeign 默认是1秒钟,部分业务时间长了可以通过这个方法进行设置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenFeign是一个声明式的Web服务客户端,它使得编写Web服务客户端变得更加容易。通过使用OpenFeign,我们可以定义一个接口用于调用远程Web服务,然后在运行时生成一个实现该接口的代理类。 以下是使用OpenFeign的步骤: 1. 添加依赖 在Maven项目中,我们需要添加以下依赖: ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> ``` 2. 创建Feign客户端接口 定义一个接口,用于调用远程Web服务。该接口通常会使用Spring MVC注解来定义请求路径、请求参数等信息。 ```java @FeignClient(name = "service-name") public interface MyFeignClient { @RequestMapping(value = "/api/resource", method = RequestMethod.GET) Resource getResource(@RequestParam("id") Long id); } ``` 其中,@FeignClient注解用于定义Feign客户端的名称,name属性指定了远程服务的名称。@RequestMapping注解则用于定义请求路径和请求方法。 3. 注入Feign客户端 在需要调用远程服务的地方,我们可以通过@Autowired注解来注入Feign客户端。 ```java @RestController public class MyController { @Autowired private MyFeignClient myFeignClient; @GetMapping("/resource/{id}") public Resource getResource(@PathVariable Long id) { return myFeignClient.getResource(id); } } ``` 这里,我们将Feign客户端注入到了控制器中,在控制器中调用了getResource方法。 4. 配置Feign客户端 我们可以通过配置文件来配置Feign客户端的行为。例如,我们可以配置连接超时时间、读取超时时间等。 ```yaml feign: client: config: default: connectTimeout: 5000 readTimeout: 5000 ``` 这里,我们将连接超时时间和读取超时时间都设置为了5秒。 以上就是使用OpenFeign的基本步骤,它使得调用远程Web服务变得更加容易。同时,OpenFeign还提供了很多高级特性,例如请求拦截器、响应拦截器等,可以帮助我们更好地管理Web服务客户端。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值