Spring cloud微服务体系必不可少的Feign (Read timed out)
Posted BBinChina
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring cloud微服务体系必不可少的Feign (Read timed out)相关的知识,希望对你有一定的参考价值。
Feign介绍
Feign是一款Java语言编写的HttpClient绑定器,在Spring Cloud微服务中用于实现微服务之间的声明式调用。Feign 可以定义请求到其他服务的接口,用于微服务间的调用,不用自己再写http请求,在客户端实现,调用此接口就像远程调用其他服务一样,当请求出错时可以调用接口的实现类来返回
Feign是一个声明式的web service客户端,它使得编写web service客户端更为容易。创建接口,为接口添加注解,即可使用Feign。Feign可以使用Feign注解或者JAX-RS注解,还支持热插拔的编码器和解码器。Spring Cloud为Feign添加了Spring MVC的注解支持,并整合了Ribbon和Eureka来为使用Feign时提供负载均衡。
feign源码的github地址:
https://github.com/OpenFeign/feign
http rpc通讯方式
http json通讯相对于二进制通讯比如(dubbo)框架,有其劣势也有其优势,最大的优势在于异构系统通常都采用http。
如何让java 项目作为一个http client已经调用远程服务呢?
<!-- feign-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>
<!-- eureka-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>
在spring boot应用使用注解
@EnableFeignClients
@EnableEurekaClient
@SpringBootApplication
@EnableFeignClients
@EnableEurekaClient
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication .class, args);
}
}
远程服务
@FeignClient(name="notice-server",url="${remote.notice.uri}")
public interface RemoteService {
@PostMapping(path = "/ApiXXX",produces = HttpConfig.JsonContent)
Response<String> ApiXXX(@RequestBody To to);
}
eureka配置
eureka:
instance:
lease-expiration-duration-in-seconds: 30
ip-address: 127.0.0.1
instance-id: ${eureka.instance.ip-address}:${server.port}
client:
service-url:
defaultZone: http://127.0.0.1:22001/eureka/
initial-instance-info-replication-interval-seconds: 10
registry-fetch-interval-seconds: 5
eureka-server-connect-timeout-seconds: 30
Feign配置
feign:
client:
config:
default:
connect-timeout: 10000
read-timeout: 20000
可以看到Feign的默认超时时间为20m,当我们调用远程服务 出现Read Timed Out时,可以根据业务情况调整
以上是关于Spring cloud微服务体系必不可少的Feign (Read timed out)的主要内容,如果未能解决你的问题,请参考以下文章
Spring Cloud 与微服务学习总结(16)—— 微服务架构统一安全认证设计与实践
Spring Cloud封神之旅-微服务与springcloud