1.超时控制
默认OpenFeign客户端等待60秒钟,但是服务端处理超过规定时间会导致Feign客户端返回报错。
yml文件对应配置:
connectTimeout:连接超时时间
readTimeout:请求处理超时时间
1.yml配置·
server:
port: 80
spring:
application:
name: cloud-consumer-openfeign-order
####Spring Cloud Consul for Service Discovery
cloud:
consul:
host: localhost
port: 8500
discovery:
prefer-ip-address: true #优先使用服务ip进行注册
service-name: ${spring.application.name}
openfeign:
client:
config:
default:
#连接超时时间
connectTimeout: 3000
#读取超时时间
readTimeout: 3000
2.测试:
调用并记录开始以及结束时间:
测试结果:
2.重试机制
OpenFeign的默认重试是关闭的
1.自定义配置重试机制
package com.wen.cloud.config;
import feign.Retryer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class FeignConfig {
@Bean
public Retryer myRetryer()
{
//return Retryer.NEVER_RETRY; //Feign默认配置是不走重试策略的
//最大请求次数为3(1+2),初始间隔时间为100ms,重试间最大间隔时间为1s
return new Retryer.Default(100,1,3);
}
}
2.测试;
3.HttpClient5
HttpClient5替换OpenFeign默认的HttpURLConnection。
OpenFeign默认使用的HttpURLConnection发送http请求,性能以及效率比较低
1.导入依赖:
<!-- httpclient5-->
<dependency>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5</artifactId>
<version>5.3</version>
</dependency>
<!-- feign-hc5-->
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-hc5</artifactId>
<version>13.1</version>
</dependency>
2.修改yml配置:
server:
port: 80
spring:
application:
name: cloud-consumer-openfeign-order
####Spring Cloud Consul for Service Discovery
cloud:
consul:
host: localhost
port: 8500
discovery:
prefer-ip-address: true #优先使用服务ip进行注册
service-name: ${spring.application.name}
openfeign:
httpclient:
hc5:
enabled: true
# openfeign:
# client:
# config:
# default:
# #连接超时时间
# connectTimeout: 5000
# #读取超时时间
# readTimeout: 5000
3.测试:
替换前:
替换后:
4.日志:
对Feign接口的调用情况进行监控和输出
日志级别:
NONE:默认的,不显示任何日志;
BASIC:仅记录请求方法、URL、响应状态码及执行时间;
HEADERS:除了 BASIC 中定义的信息之外,还有请求和响应的头信息;
FULL:除了 HEADERS 中定义的信息之外,还有请求和响应的正文及元数据。
1.配置日志bean
2.yml配置
logging:
level:
com:
wen:
cloud:
apis:
PayFeignApi: debug