说明: 文章一已整合好nacos,但想要服务调用还是有点麻烦,需要先从nacos-server中拿到目标服务的路径,再去访问目标服务,如下图
从注册中心nacao的负载均衡接口获取服务实例信息,在通过RestTemplate调用服务, 感觉是不是很麻烦?很不爽?
所以如openfeign等中间件就酝酿而生,把这些麻烦的东西给做了,并提供一些其他强大功能。
正文:
本次整合在atom-api服务中,去调用atom-user服务。
1、pom.xml引入openfeign依赖
<!--openfein的依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.1.2.RELEASE</version>
</dependency>
2、在启动类application中加入@EnableFeignClients注解开启feign服务
3、创建feign调用的service接口
4、编写调用接口
目标服务atom-user的提供服务为:
启动2个服务,访问该接口
5、feign配置功能
修改日志级别
在发送和接收请求的时候,将日志的输出定义了四个等级:
级别 | 说明 |
---|---|
NONE | 不做任何记录 |
BASIC | 仅记录请求方法和URL以及响应状态代码和执行时间 |
HEADERS | 记录基本信息以及请求和响应标头 |
FULL | 记录请求和响应的标题,正文和元数据 |
默认是不打印日志的,所以在application.yim中配置日志路径:
logging:
level:
com.pig.springcloud.alibaba.example.springcloud.alibaba.examples.feign: debug
创建配置类
再启动服务后访问刚才接口,查看日志
数据压缩:
feign:
compression:
request:
enabled: true
response:
enabled: true
配置文件中 default全局配置
feign.client.config.default.xxx ,通过这个default创建全局的配置属性。
feign:
client:
config:
default:
connectTimeout: 5000
readTimeout: 5000
loggerLevel: basic
配置文件中专属配置
可设置连接超时时间、日志级别、拦截器、数据加密解密等功能
feign:
client:
config:
feignName:
connectTimeout: 5000
readTimeout: 5000
loggerLevel: full
errorDecoder: com.example.SimpleErrorDecoder
retryer: com.example.SimpleRetryer
requestInterceptors:
- com.example.FooRequestInterceptor
- com.example.BarRequestInterceptor
decode404: false
encoder: com.example.SimpleEncoder
decoder: com.example.SimpleDecoder
拦截器等本次不做详细记录。
资料参考: https://www.jianshu.com/p/49accf2167b2