IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Spring cloud Ribbon Feign 超时,重试配置 -> 正文阅读

[Java知识库]Spring cloud Ribbon Feign 超时,重试配置

在使用Spring Cloud 的时候,都会用到Ribbon做负载均衡,使用Feign 简化web 服务调用,在使用的过程中,网络服务是不稳定,所有要设置超时时间,避免服务端响应慢影响调用的服务,网络可能偶尔不稳定,重试机制能增加成功的几率。处理超时机制的几个方式;如下

Ribbon 超时设置
1.全局设置,所有的ribbon客户端都会生效

?ribbon.ReadTimeout=2000 # 设置读取时间为2s
?ribbon.ConnnectTimeout=1000 #tcp建立连接的时间,内网一般设置1s以内


2.独立设置某个服务的ribbon调用超时时间

? ? 该设置会覆盖掉全局配置,servicename为调用服务在注册中心注册服务名称

?servicename.ribbon.ReadTimeout=2000 # 设置读取时间为2s
?servicename.ribbon.ConnnectTimeout=1000 #tcp建立连接的时间,内网一般设置1s以内


Ribbon 重试设置
1.需要引入spring的重试模块组件,否则配置不生效,这点一定要注意

<!-- ?RestTemplate Fegin ?Ribbon 调用重试需要引入次包 ? ? ? ? ? -->
? ? ? ? <dependency>
? ? ? ? ? ? <groupId>org.springframework.retry</groupId>
? ? ? ? ? ? <artifactId>spring-retry</artifactId>
? ? ? ? ? ? <version>1.3.0</version>
? ? ? ? </dependency>?


2.全局设置,这设置调用失败的话,当前服务重试一次,如果不成功,重试下一个服务一次

ribbon.OkToRetryOnAllOperations #对所有的操作都进行重试,默认是GET请求进行重试
ribbon.MaxAutoRetries=1 # 重试当前服务最大次数
ribbon.MaxAutoRetriesNextServer=1 #下一个服务的重试次数


3.独立设置某个服务的ribbon调用超时时间

? ? 该设置会覆盖掉全局配置,servicename为调用服务在注册中心注册服务名称

servicename.ribbon.OkToRetryOnAllOperations #对所有的操作都进行重试,默认是GET请求进行重试
?servicename.ribbon.MaxAutoRetries=1 # 重试当前服务最大次数
?servicename.MaxAutoRetriesNextServer=1 #下一个服务的重试次数?


Fegin整合Ribbon超时设置
1. 和ribbon设置超时配置一样

2.spring cloud 也对Feign 提供了其他配置方式,比如这里服务名称为 ?user-service ,不过这种方式设置超时,不能使用配置中心动态调整超时时间,这点需要特别注意。

? feign.client.config.user-service.read-timeout=2000 ? # 设置读取时间为2s?
? feign.client.config.user-service.connect-timeout=1000 #tcp连接超时时间1s以内? ? ?


Fegin整合Ribbon重试设置
1.和ribbon设置重试一样

Fegin不使用Ribbon超时设置
1.这里Feign 不在使用Ribbon负载均衡,直接通过url调用一些服务,比如通过nginx调用,FeignClient 配置必须要配置name,这里还是以user-service为例

? feign.client.config.user-service.read-timeout=2000 ? # 设置读取时间为2s?
? feign.client.config.user-service.connect-timeout=1000 #tcp连接超时时间1s以内? ? ?


Fegin不使用Ribbon重试设置
1.需要实现Retryer接口

public interface Retryer extends Cloneable {
?
? /**
? ?* if retry is permitted, return (possibly after sleeping). Otherwise propagate the exception.
? ?*/
? void continueOrPropagate(RetryableException e);
?
}


2.这里以使用Feign 的默认实现Default为例配置,这里使用bean的方式配置,这里配置 最大重试次次数是5次,最大重试时间1s,每次重试间隔100ms

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
?
import feign.Retryer;
?
import static java.util.concurrent.TimeUnit.SECONDS;
?
@Configuration
public class AppConfig {
?
?
?
? ? @Bean
? ? public Retryer feignRetryer(){
?
? ? ? ? return new Retryer.Default(1,SECONDS.toMillis(1), 5);
? ? }
?
?
}

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-07-21 21:22:54  更:2022-07-21 21:26:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 12:47:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码