OpenFeign远程调用的一系列问题

本文参考博客

SpringCloud(四)-手把手教你使用OpenFeign - 简书

仅在此基础稍作修改和添加一些踩过的坑

1. OpenFeign简介

OpenFeign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用OpenFeign,可以做到使用HTTP请求访问远程服务,就像调用本地方法一样的,开发者完全感知不到这是在调用远程方法,更感知不到在访问HTTP请求。

2. 配置OpenFeign

2.1 配置pom.xml

<!-- openfeign依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>2.2.1.RELEASE</version>
        </dependency>

2.2 主启动类加上注解@EnableFeignClients注解

@EnableFeignClients申明该项目是Feign客户端,扫描对应的feign client。

(即为调用方主启动类加上注解@EnableFeignClients注解)

2.3 新增提供者API接口

在服务调用者方,编写声明远程调用服务的接口,并添加@FeignClient(name="customer-server")注解,name就是我们要访问的微服务的名称,这个注解是及其重要的,表明了远程调用的服务。方法quoteIdentity中@RequestMapping(value="/mutual/quoteIdentity")和服务提供者的接口路径一致(下图)。

 2.4服务调用者方同样需要写Controller层,调用2.3service层提供的接口

 2.5解决超时问题

openfeign超时默认1秒钟

openfeign底层自动引入ribbon,所以超时由ribbon控制

在消费端yml里面配置如下,5000为5秒,这样消费端会等待5秒才会报错

connecttimeout 响应超时设置---找到接口的时间
readtimeout 请求超时设置---接口可用返回值处理的时间

ribbon:
  ReadTimeout: 5000
  ConnectTimeout: 5000

但是有时不管用,就用下面的配置

feign:
  client:
    config:
      default:
        connectTimeout: 1000
        readTimeout: 2000  

注意,此配置在一级目录下,和spring平级,可直接加在yml文件最后

default表示全局默认的超时时间,如果只针对某一个服务的调用进行设置,这里应该是服务名

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值