feign客户端设置超时时间操作
作者:xqnode 发布时间:2023-07-01 19:16:32
标签:feign,客户端,超时
我就废话不多说了,大家还是直接看代码吧~
/**
* feign调用客户端
*/
@FeignClient(name = "user", url = "${user.url}", configuration = MyFeignDecoder.class)
public interface UserClient {
@GetMapping("/rest/user/get/detail/{loginName}")
JSONObject getUserInfoByLoginName(@PathVariable(value = "loginName") String loginName);
}
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.context.annotation.Scope;
import com.iflytek.icourt.exception.UnloginErrorException;
import com.iflytek.icourt.secretary.constant.Constant;
import com.netflix.hystrix.exception.HystrixBadRequestException;
import feign.Request;
import feign.Response;
import feign.codec.Encoder;
import feign.jackson.JacksonEncoder;
/**
* feign配置类
*/
@Configuration
public class MyFeignDecoder implements feign.codec.ErrorDecoder{
public static Logger logger = LoggerFactory
.getLogger(MyFeignDecoder.class);
@Override
public Exception decode(String methodKey, Response response) {
logger.info("status:-------" + response.status());
return feign.FeignException.errorStatus(methodKey, response);
}
@Bean
@Primary
@Scope("prototype")
public Encoder jacksonEncoder () {
return new JacksonEncoder();
}
@Bean
Request.Options feignOptions() {
return new Request.Options(2 * 1000, 120 * 1000);
}
}
补充知识:feign调用问题\超时
1、项目结构 每个微服务是provider情况下有一个client模块(里面含有定义好的feignclient 接口) 专门打包出去给其他微服务消费
这样的话 其他需要调用的微服务只要把这个client jar包引入即可,
2、在其他微服务中 引入clientXX.jar 这时候有一个坑, 就是 @EnableFeignClients这个注解默认是只扫描项目启动application下的包 如果不同项目可能包路径不一致, 所以@EnableFeignClients得指定你的client.jar里面的路径 或者两个项目中 共同的顶级路径 例如com.XX.cloud 同一个公司内部 顶层包结构应该是一致的
3、feign调用超时 默认feign调用超时是1000毫秒的 有断点就肯定超时
需要加上以下配置
feign.hystrix.enabled=true
#feign调用默认是1000毫秒=1秒 应该设置成更长时间1000 * 60 * 5 = 5分钟 add by six-vision
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=300000
hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds=300000
hystrix.command.default.circuitBreaker.forceClosed=true
#hystrix.command.default.execution.timeout.enabled=false
#请求处理的超时时间 add by six-vision
ribbon.ReadTimeout=300000
ribbon.SocketTimeout=300000
#请求连接的超时时间 add by six-vision
ribbon.ConnectTimeout: 30000
来源:https://blog.csdn.net/xqnode/article/details/89847687


猜你喜欢
- FileStream对象表示在磁盘或网络路径上指向文件的流。这个类提供了在文件中读写字节的方法,但经常使用StreamReader或Stre
- 为了解决以下两个问题:1、单JAR包应用查看日志需要的时候如果需要远程访问服务器登录查看日志,那样相对比较麻烦2、生产环境为了解决BUG需要
- 写在前面之前想尝试把JWT和Shiro结合到一起,但是在网上查了些博客,也没太有看懂,所以就自己重新研究了一下Shiro的工作机制,然后自己
- 首先在命令行创建一个PhoneGap工程phonegap create . "jspdf.sample" "J
- 1.图的遍历从图中某一顶点出发访问图中其余顶点,且每个顶点仅被访问一次图的遍历有两种深度优先遍历DFS、广度优先遍历BFS2.深度优先遍历深
- ReentrantLock内部由Sync类实例实现。Sync类定义于ReentrantLock内部。Sync继承于AbstractQueue
- public void add(intindex, Eelement)从index索引的位置添加element元素,后面的元素都往
- 在android中,LayoutInflater有点类似于Activity的findViewById(id),不同的是LayoutInfla
- Spring课程工程构建 在IDEA 工作空间里面创建Spring文件夹。打开IDEA,file–>Open&am
- 最近尝试做了个listview的多选demo,网上看其他人的例子感觉不是很难,自己动手做了下,各种细节问题,没那么简单啊。既然做了,简单写个
- 网上文章虽多,但是这种效果少之又少,我真诚的献上以供大家参考实现原理:自定义ImageView对此控件进行相应的layout(动态布局).这
- 多对一(Many-to-One)映射多对一(many-to-one)关联是最常见的关联关系,其中一个对象可以与多个对象相关联。例如,一个相同
- 方法一:实现Comparator接口,并重写compare方法实体类代码:import java.util.Comparator;/** *
- Java下常见的Json类库有Gson、JSON-lib和Jackson等,Jackson相对来说比较高效,在项目中主要使用Jackson进
- Java的位操作符用来操作整数基本数据类型中的单个“比特”(bit),即代进制位。而我们知道比特就是0和1,那么,位操作就是对这些数据进行基
- springboot项目启动,访问报404错误今天在做一个springboot项目的时候,是接着别人的项目写的,写完之后想做一下测试,于是就
- 一、File类的概述和构造方法public class Fileextends Objectimplements Serializable,
- 1. 新增XML文件XMLToolV2 _xmlHelper = new XMLToolV2(@"C:\20140311blogs
- 1、Json的制作package com.example.usingjson2; import org.json.
- Java绘图中,显示文字的方法主要有三种:(1)drawString(String str,int x,int y):在指定的位置显示字符串