OpenFeign

一、Feign和OpenFeign的区别

  1. 支持spring mvc 注解
  2. 整合了更多的扩展(请求重试策略、超时控制、请求拦截器)

二、高级配置

2.1 日志配置

日志等级有4种:

  1. NONE(性能最佳,适用于生产):不记录任何日志
  2. BASIC(适用于生产环境追踪):仅记录请求方法、URL、响应状态代码以及执行时间。
  3. HEADERS:记录BASIC级别的基础上,记录请求和响应的header
  4. FULL(适用于开发与测试环境定位问题):记录请求和响应的header、body和元数据。

2.2超时配置

若服务提供者的请求处理时间超过了请求处理的超时时间,则会报Read timed out错误

2.3 自定义拦截器(重点)

在OpenFeign中可以通过自定义拦截器的方式,实现远程服务调用过程中的日志输出和认证授权。

OpenFeign 中的拦截器是对服务调用者(也叫消费者)调用服务提供者的过程进行拦截。
Spring MVC 中的拦截器是对客户端(浏览器)请求服务端的过程进行拦截。

2.3.1 自定义OpenFeign拦截器类

在服务消费者项目中创建一个名称为TraceIdFeignInterceptor 的拦截器类,并让其继承RequestInterceptor类。

@Slf4j
//@Component
public class TraceIdFeignInterceptor implements RequestInterceptor {
    @Override
    public void apply(RequestTemplate template) {
        log.debug("请求拦截了");
    }
}

2.3.2 配置拦截器

1)全局配置
我们可以在配置类中配置自定义的OpenFeign拦截器。

@Configuration
public class FeignConfig {
    @Bean
    public TraceIdFeignInterceptor feignInterceptor(){
        return new TraceIdFeignInterceptor ();
    }
}

2)局部配置
我们也可以在application.yaml文件中对自定义的OpenFeign拦截器进行局部配置。

feign.client.config.order-service.requestInterceptors[0]=com.beiyou.TraceIdFeignInterceptor #自定义拦截器的完整类路径
feign.client.config.order-service.requestInterceptors[1]=com.beiyou.xxxxxxxxx

3)常用简化版
在这里插入图片描述

OpenFeign是一个声明式的http客户端,是SpringCloud在Eureka公司开源的Feign基础上改造而来,是微服务架构下进行服务间调用的优雅工具,它简化了服务消费者端与服务生产者通信的复杂性,通过声明式客户端接口降低了耦合,并提升了开发效率。其作用是基于SpringMVC的常见注解,帮助简单实现http请求的发送,利用SpringMVC的相关注解来声明参数,然后基于动态代理生成远程调用的代码,无需手动编写[^1][^2]。 在黑马商城的Spring Cloud微服务架构中,OpenFeign用于实现微服务之间的远程调用。在使用OpenFeign进行远程调用时,可将用户信息从一个微服务传递到另一个微服务,以便被调用的微服务能够获取当前用户的相关信息,进而实现基于用户信息的业务逻辑处理,例如根据用户权限获取不同的数据、记录用户相关操作等[^3]。 使用OpenFeign的步骤如下: 1. 引入openfeign的依赖。 2. 配置`application.yml`,示例如下: ```yaml 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. 配置启动类,示例如下: ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.openfeign.EnableFeignClients; @SpringBootApplication @EnableEurekaClient @EnableFeignClients public class MemberConsumerOpenfeignApplication80 { public static void main(String[] args) { SpringApplication.run(MemberConsumerOpenfeignApplication80.class, args); } } ``` 4. 进行测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值