Spring Cloud之Feign客户端超时时间配置

5. Spring Cloud OpenFeign 声明式 WebService 客户端的超详细使用 对应上一篇学习内容:???4. Spring Cloud Ribbon 实现“负载均衡”的详细配置说明_ribbon升级到了loadbalancer-优快云博客对应下一篇学习内容:???OpenFeign 是什么?OpenFeign 是个声明式WebService客户端,使用 OpenFeign 让编写 Web Service客户端更简单。它的使用方法是定义一个服务接口,然后在上面添加注解。OpenFeign 也支持可插拔式的编码器和解码器。 阅读详情

Spring Cloud之Feign客户端超时时间配置

关于雪崩效应:  

默认情况下tomcat只有一个线程去处理客户端发送的所有请求。高并发情况下,如果客户端请求都在同一接口,tomcat的所有线程池去处理,导致其他接口服务访问不了,等待。

Tomcat有个线程池,每个线程去处理客户端发送每次请求。

 

在parent项目里面再创建一个项目,common

 Eureka server: 略

 

Member :

service

 

package com.toov5.api.entity;

import lombok.Data;

@Data
public class UserEntity {
    private String name;
    private Integer age;
   
}

 

package com.toov5.api.service;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.toov5.api.entity.UserEntity;
import com.toov5.base.ResponseBase;

@RestController
public interface IMemberService {
 
    @RequestMapping("/getMember")  //接口加@RequestMapping 被其他项目调用时候 feign客户端可以继承
    public UserEntity getMember(@RequestParam("name") String name);
    
    @RequestMapping("/getUserInfo")
    public ResponseBase getUserInfo();
    
}

 

实现类:

 

 

package com.toov5.api.service.impl;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.toov5.api.entity.UserEntity;
import com.toov5.api.service.IMemberService;
import com.toov5.base.BaseApiService;
import com.toov5.base.ResponseBase;

   //注意加在实现类上面!!! 接口不能加 接口不能被实例化
@RestController
public class MemberServiceImpl extends BaseApiService implements IMemberService {
    
     @RequestMapping("/getMember")  
    public UserEntity getMember(@RequestParam("name") String name) {
        UserEntity userEntity = new UserEntity();
        userEntity.setName(name);
        userEntity.setAge(10);
        return userEntity;
    }
     
     @RequestMapping("/getUserInfo") 
     public ResponseBase getUserInfo() {
        try {
            Thread.sleep(1500);
        } catch (Exception e) {
            
        }
        return setResultSuccess("订单服务接口调用会员服务接口成功....");
    }
 
}

启动类

package com.toov5.api.service.impl;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication (scanBasePackages={"com.toov5.*"})
@EnableEurekaClient
@EnableFeignClients
public class AppMember {
  public static void main(String[] args) {
    SpringApplication.run(AppMember.class, args);
}
}

yml

###服务启动端口号
server:
  port: 8000
###服务名称(服务注册到eureka名称)  
spring:
    application:
        name: app-toov5-member
###服务注册到eureka地址
eureka:
  client:
    service-url:
           defaultZone: http://localhost:8100/eureka

           
###因为该应用为注册中心,不会注册自己
    register-with-eureka: true
###是否需要从eureka上获取注册信息
    fetch-registry: true

 pom:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.toov5</groupId>
    <artifactId>parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>toov5-api-member-service-impl</artifactId>
  
  	<dependencies> 
  	 	<dependency>
  	 	  <groupId>com.toov5</groupId>
           <artifactId>toov5-api-member-service</artifactId>
             <version>0.0.1-SNAPSHOT</version>
  	 	</dependency>	
  	 	<dependency>
  	 	  <groupId>com.toov5</groupId>
            <artifactId>toov5-api-order-service</artifactId>
             <version>0.0.1-SNAPSHOT</version>
  	 	</dependency>	 	
  	</dependencies>
  
</project>

Order:

service

pom:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.toov5</groupId>
    <artifactId>toov5-api-service</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>toov5-api-order-service</artifactId>
    <dependencies>
    <dependency>
      <groupId>com.toov5</groupId>
    <artifactId>toov5.common</artifactId>
    <version>0.0.1-SNAPSHOT</version>  
    </dependency>
   
  </dependencies>
</project>

 接口

package com.toov5.api.service;

import org.springframework.web.bind.annotation.RequestMapping;

import com.toov5.base.ResponseBase;

public interface IOrderService {
   //订单服务带哦用会员服务接口信息fegin
    @RequestMapping("/orderToMember")
    public String orderToMember(String name);
    
    
    //订单服务接口调用会员服务接口
    @RequestMapping("/orderToMemberUserInfo")
    public ResponseBase orderToMemberUserInfo();
    
}

 

 

pom:

<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>com.toov5</groupId>
		<artifactId>parent</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>
	<artifactId>toov5-api-order-service-impl</artifactId>

	<dependencies>
		<dependency>
           <groupId>com.toov5</groupId>
			<artifactId>toov5-api-order-service</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>
		
     <dependency>
           <groupId>com.toov5</groupId>
			<artifactId>toov5-api-member-service</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>
	</dependencies>


</project>

  

package com.toov5.api.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.toov5.api.entity.UserEntity;
import com.toov5.api.feign.MemberServiceFeign;
import com.toov5.api.service.IOrderService;
import com.toov5.base.ResponseBase;

@RestController
public class OrderServiceImpl implements IOrderService {
        @Autowired
      private MemberServiceFeign memberServiceFeign; 
    
      @RequestMapping("/orderToMmeber")
      public String orderToMember(String name) {
      UserEntity user = memberServiceFeign.getMember(name);
        return  user==null ? "没有找到用户先关信息" : user.toString();
    }
      
     @RequestMapping("/orderToMemberUserInfo")
      public ResponseBase orderToMemberUserInfo() {     
          return  memberServiceFeign.getUserInfo();
    }
}
package com.toov5.api.feign;

import org.springframework.cloud.openfeign.FeignClient;

import com.toov5.api.service.IMemberService;
//避免了冗余代码 直接过来就ok了
@FeignClient("app-toov5-member")
public interface MemberServiceFeign extends IMemberService {
   //实体类是存放接口项目还是存放在实现项目 实体类存放在接口项目里面
    //实体类和定义接口信息存放在接口项目
    //代码实现放在接口实现类里面
}

yml:

###服务启动端口号
server:
  port: 8001
###服务名称(服务注册到eureka名称)  
spring:
    application:
        name: app-toov5-order
###服务注册到eureka地址
eureka:
  client:
    service-url:
           defaultZone: http://localhost:8100/eureka

           
###因为该应用为注册中心,不会注册自己
    register-with-eureka: true
###是否需要从eureka上获取注册信息
    fetch-registry: true

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

  

 启动类

package com.toov5.api;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication(scanBasePackages={"com.toov5.*"})
@EnableEurekaClient
@EnableFeignClients
public class AppOrder {
   public static void main(String[] args) {
    SpringApplication.run(AppOrder.class, args);
}
}

 

 结果:

 

springcloud feign设置超时时间(Spring boot2.0及以上) feign: client: config: default: connect-timeout: 10000 read-timeout: 20000 service-test: connect-timeout: 10000 read-timeout: 20000 阅读详情

相关推荐

Cadence原理图设计10个高效技巧:从封装绑定到BOM表导出全流程

本文为硬件工程师提供了一套Cadence OrCAD Capture CIS原理图设计的高效实战指南。文章深度解析了从封装库的精准管理与CIS数据库绑定、封装批量处理技巧,到设计缓存清理、跨页信号追踪,再到关键的DRC检查、网表导出以及智能BOM报表生成的全流程核心技巧,旨在帮助工程师提升设计效率与可靠性,规避常见错误。

weixin_29178069的博客 201

SpringCloud feign 的三种超时时间配置

注意:当Feign的read-timeout大于Hytrix的超时时间时,此时如果本服务调用的第三方接口响应时间较长,请求到hytrix超时时间仍未返回,则进行熔断。而此时请求第三方接口并未终止,直到到读取超时时间,请求第三方接口的连接才终止。Feign调用服务的默认时长是1秒钟,也就是如果超过1秒没连接上或者超过1秒没响应,就会相应的报错。ReadTimeout:10000#指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间。3、Feign的Hystrix熔断功能配置。

m0_67392931的博客 8928

华硕ROG玩家国度安装Ubuntu双系统避坑指南:安全启动密钥那些事儿

本文详细解析了在华硕ROG玩家国度设备上安装Ubuntu双系统时,如何正确处理BIOS中的安全启动(Secure Boot)与密钥管理,避免常见的引导失败和Windows系统无法启动问题。指南提供了从数据备份、启动盘制作到BIOS精细设置(如将OS Type改为Other OS而非简单关闭Secure Boot)以及分区规划的完整流程,确保两个系统都能稳定共存。

weixin_29219189的博客 754

FeignClient 超时设置

FeignClient超时设置FeignClient超时设置 FeignClient超时设置 feign超时设置有3种方式:配置文件直接配置FeignClient、自定义Request.Options及配置文件配置Ribbon,优先级从高到低如下。 1、配置文件里对特定FeignClient配置属性: feign.client.config.demo.connectTimeout=1000,fei...

weixin_36244726的博客 3675

Flink CDC 3.0 详解

Flink CDC 是基于数据库日志 CDC(Change Data Capture)技术的实时数据集成框架,支持全增量一体化、无锁读取、并行读取、表结构变更自动同步、分布式架构等高级特性。配合Flink 优秀的管道能力和丰富的上下游生态,Flink CDC 可以高效实现海量数据的实时集成。Flink CDC 于2023年12月7日重磅推出其全新的 3.0 版本,3.0版本的发布对 Flink CDC 而言具有里程碑的意义,自此 Flink CDC 从捕获数据变更的Flink 数据源正式迈向为以 Flink

奔跑的蜗牛的博客 2639

ThinkPHP+Layui开发的ERP管理系统

ERP采购生产销售系统,一款基于ThinkPHP+Layui开发的ERP管理系统,帮助中小企业实现ERP管理规范化,此系统能为你解决五大方面的经营问题:1.采购管理 2.销售管理 3.仓库管理 4.资金管理 5.生产管理,适用于:服装鞋帽、化妆品、机械机电、家具装潢、建材行业、快销品、母婴用品、办公用品、汽配汽修、生鲜农贸、手机通讯、数码家电、医药用品、制造业、信息技术服务行业等。提供全部无加密服务端和前端源代码,独立部署,不受限制。

u011092458的博客 788

Feign Client的超时时间

在Spring Cloud微服务架构中,大部分公司都是利用Open Feign进行服务间的调用,而比较简单的业务使用默认配置是不会有多大问题的,但是如果是业务比较复杂,服务要进行比较繁杂的业务计算,那后台很有可能会出现Read Timeout这个异常,因此定制化配置超时时间就有必要了。 1|0Feign Client Configuration # 默认开启 feign.httpclient.enabled=false # 默认关闭 feign.okhttp.enabled=true # 默认关闭 f

z69183787的专栏 5483

Goose开源程序本地机上 AI 代理,能够从头到尾自动执行复杂的开发任务。Goose 不仅可以提供代码建议,还可以自主构建整个项目、编写和执行代码、调试故障、编排工作流程以及与外部 API 交互

Goose开源程序 是您的本机上 AI 代理,能够从头到尾自动执行复杂的开发任务。Goose 不仅可以提供代码建议,还可以自主构建整个项目、编写和执行代码、调试故障、编排工作流程以及与外部 API 交互。无论您是在构建想法原型、优化现有代码,还是管理复杂的工程管道,goose 都能适应您的工作流程并精确执行任务。

struggle2025的博客 2041

Feign 超时时间配置

影响到feign接口超时时间的主要有三类配置:feign、ribbon和hystrix。 feign的配置: feign: client: config: default: // 这个代表 服务,default为任意服务,可以指定服务名来指定调用该服务时的超时时间 connectTimeout: 毫秒时间,建立连接的超时时间,一般只在发现服务时用到 readTimeout: 毫秒时间 ,接口请求的超时时间 ribbon的配置: ribbon: ReadTimeout: 毫秒时

hanzhen2010的博客 9404

【nerfStudio】1-在windows上安装nerfStudio

安装Git。安装Visual Studio 2022。在安装CUDA之前必须完成此步骤。必须在“桌面开发与C++”工作流程(在BuildTools版本中称为“C++构建工具”)中包含所需的组件。Nerfstudio要求。我们建议使用conda来管理依赖关系。在继续之前,请确保安装了Conda。 依赖关系 PyTorch 请注意,如果安装了低于2.0.1的PyTorch版本,则应卸载先前版本的pytorch、functorch和tiny-cuda-nn。 基于CUDA 11.8的Torch 2.0.1 安装基

dlhlSC的博客 1692

YOLO项目从零开始:超详细运行教程(图文保姆级教学)

至此,我们已经完整跑通了YOLO项目的安装与启动流程,无论你是零基础小白还是刚入门的AI新兵,只要按部就班操作,也能轻松实现目标检测项目的落地。

一键难忘的博客 4800

Feign客户端 - 超时时间配置

feign默认超时时间

竹林幽深 7387

Unity GameObject 核心机制深度解析:从底层结构到工程实践

从底层机制讲透 Unity GameObject:托管壳加原生芯的双层对象模型如何制造假 null 陷阱、Transform 层级与组件通信的原理、生命周期回调的确切顺序。文章同时给出 Instantiate 成本分析与对象池等高频场景的工程实践。

游戏人生 40

Spring Cloud Feign Feign连接读取超时配置

文章目录全局配置单个客户端 feign相关配置类代码org.springframework.cloud.openfeign.FeignClientProperties 看下如何配置feign连接和读取的超时时间 在超时方面,它允许我们配置读取和连接超时。连接超时是 TCP 握手所需的时间,而读取超时则是从套接字读取数据所需的时间。 默认情况下,连接和读取超时分别为 10 和 60 秒。 全局配置 feign: client: config: default: conn

laker的博客 1747

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Spring Cloud OpenFeign 声明式 WebService 客户端的超详细使用

OpenFeign 是什么?OpenFeign 是个声明式WebService客户端,使用 OpenFeign 让编写 Web Service客户端更简单。它的使用方法是定义一个服务接口,然后在上面添加注解。OpenFeign 也支持可插拔式的编码器和解码器。Spring Cloud 对 OpenFeign 进行了封装使其支持了 Spring MVC 标注注解 和。OpenFeign 可以与 Eureka 和 Ribbon 组合使用以支持负载均衡。

2501_92589102的博客 880

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Spring Cloud Feign

在Spring Cloud体系中,Feign的作用就是可以与Eureka和Riibon组合在一起简化各服务之间的http调用,它存在的意义就是简化jttp调用,让开发者可以像调用方法一样访问http接口,在非Sping Cloud体系项目中,遇到需要调用第三方接口的需求,也可以使用它去简化一些http的调用。 Feign是一个声明式的Rest客户端,它能让http调用更加简单。Feign提供了http请求的模板,通过编写简单的接口和插入注解,就可以定义好http请求的参数、格式、地址等信息,这样,就可以像

好记性不如烂笔头 862

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Spring Cloud 四、 rpc 调用工具 Feign 客户端

1、添加 maven依赖 添加依赖 <!-- 整合fegnin客户端 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-ope...

ws - 兮的博客空间 594

Springcloud 整合Hystrix 断路器,支持Feign客户端调用

1,在这篇博文中,已经大致说过了Springcloud服务保护框架 Hystrix在服务隔离,服务降级,以及服务熔断中的使用 https://www.cnblogs.com/pickKnow/p/11250374.html 2,声明式的调用hystrix,也是很重要的,以及用整合feign 客户端 maven: <!-- hystrix断路器 --> <d...

weixin_30508241的博客 153

Spring Cloud(四):Spring Cloud Alibaba Feign & Dubbo

Feign 设计扩展 Feign 日志配置Logger.Level Feign 锲约原生注解Contract Feign 拦截器实现参数传递RequestInterceptor Feign 超时时间Request.Options Feign 客户端组件配置feign.Client#execute Feign GZIP压缩feign.compression Feign编解码配置 SpringCloud 整合 Feign & Dubbo & Feign 迁移到 Dubbo @DubboTransported

Men-DD 1410

OpenFeign

Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单,它的使用方法就是定义一个接口,然后在上面添加注解,同时也支持JAX-RS标准的注解。Feign也支持可插拔式的编码器和解码器。SpringCloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。 Feign与OpenFeige的区别 OpenFeign的使用 添加

浮煌的博客 8083

spring cloud学习(三)——feign 使用以及问题

fegin使用1、服务端(server)2、客户端(client)配置3、fegin 调用超时问题3.1 后台显示如下:3.2 解决方案 1、服务端(server) 引入jar <dependency> <groupId>org.springframework.cloud</groupId> <artifac...

JHC23的专栏 1008

Feign的原理及概念

Feign是Netflix开发的声明式、模板化的HTTP客户端,Feign可帮助我们更加便捷、优雅地调用HTTP API。Feign可以做到使用HTTP请求远程服务时就像调用本地方法一样的体验,开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求。Spring Cloud OpenFeign对Feign进行了增强,使其支持Spring MVC注解,从而使得Feign的使用更加方便。

m0_45164511的博客 2371

Spring cloud Feign 入门demo

spring Feign (服务与服务调用工具)    添加Feign依赖:            &lt;dependency&gt;                  &lt;groupId&gt;org.springframework.cloud&lt;/groupId&gt;                  &lt;artifactId&gt;spring-cloud-starter-f...

夏目_muzi_920316的博客 4641

Feign超时时间不生效

feignclient单独给每个微服务设置超时时间

weixin_40404683的博客 1922
上一篇: Spring Cloud之Feigin客户端重构思想
下一篇: Spring Cloud之Hystrix服务保护框架
Art&Code
博客等级 码龄7年 77粉丝 554原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值