SpringCloud(3)-OpenFeign相关配置
- OpenFeign 是个声明式 WebService 客户端,使用 OpenFeign 让编写 Web Service 客户端更简单。
- Spring Cloud 对 OpenFeign 进 行 了 封 装 使 其 支 持 了 Spring MVC 标 准 注 解 和
HttpMessageConverters。 - OpenFeign 可以与 Eureka 和 Ribbon 组合使用以支持负载均衡。
1.配置 pom.xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
引入openfeign的依赖
2.配置application.yml
server:
port: 80
spring:
application:
name: member-service-consumer-openfeign
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://eureka9001.com:9001/eureka,http://eureka9002.com:9002/eureka
3.配置启动类
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class MemberConsumerOpenfeignApplication80 {
public static void main(String[] args) {
SpringApplication.run(MemberConsumerOpenfeignApplication80.class, args);
}
}
4.测试
启动后,到eureka页面查看是否注册成功
5.配置Service接口
@Component
@FeignClient(value = "MEMBER-SERVICE-PROVIDER")
public interface MemberFeignService {
/**
* 远程调用的方法
* url: http://MEMBER-SERVICE-PROVIDER/member/get/{id}
* OpenFeign 会根据 url 去找 MEMBER-SERVICE-PROVIDER 服务,使用内置的负责均衡算法
*/
@GetMapping("/member/get/{id}")
public Result<Member> getMemberById(@PathVariable("id") Long id);
}
6.配置Controller实现方法
@RestController
public class MemberConsumerFeignController {
@Resource
private MemberFeignService memberFeignService;
// 远程调用
@GetMapping("/member/consumer/openfeign/get/{id}")
public Result<Member> getMemberById(@PathVariable("id") Long id) {
return memberFeignService.getMemberById(id);
}
}
7.测试
8.日志配置
Feign 提供了日志打印功能,可以通过配置来调整日志级别,从而对 Feign 接口的调用情况进行监控和输出:
- NONE∶默认的,不显示任何日志
- BASIC∶仅记录请求方法、URL、响应状态码及执行时间;
- HEADERS∶除了 BASIC中定义的信息之外,还有请求和响应的头信息;
- FULL∶除了HEADERS中定义的信息之外,还有请求和响应的正文及元数据。
8.1 OpenConfig配置类
设置日志等级,注意Logger引入的依赖是feign
@Configuration
public class OpenFeignConfig {
@Bean
Logger.Level logLevel() {
return Logger.Level.FULL;
}
}
8.2 application.yml 配置
logging:
level:
#对 MemberFeignService 接口调用过程 打印的日志信息-debug 级别[error, warn, info, debug, trace]
com.atguigu.springcloud.service: debug
9.OpenFeign超时配置
application.yml
ribbon:
#设置 feign 客户端超时时间,指的是建立连接后从服务器读取到可用资源所用的时间,
ReadTimeout: 6000
#指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间
ConnectTimeout: 6000