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页面查看是否注册成功
image.png

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.测试

image.png

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
posted @ 2024-05-19 11:35  marigo  阅读(78)  评论(0编辑  收藏  举报