openFegin的简单使用

常用的Http客户端

  • 1.HttpClient(apche下子项目)
  • 2.Okhttp(主要用户安卓)
  • 3.HttpURLConnection(java 标准的http请求客户端,单线程)
  • 4.RestTemplate ()
  • 5.OpenFeign是Netflix开源的声明式HTTP客户端
    HttpClient和Okhttp可以使用线程池
    Feign使用http请求调用远程服务就行调用本地方法似的,开发者感知不到是一个远程方法或者Http请求。
    restTemplate 是封装了httpClient
    feign方式 封装了OKhttp

feign和openfeign的区别

  • a、他们底层都是内置了Ribbon,去调用注册中心的服务。
  • b、Feign是Netflix公司写的,是SpringCloud组件中的一个轻量级RESTful的HTTP服务客户端,是SpringCloud中的第一代负载均衡客户端。
    OpenFeign是SpringCloud自己研发的,在Feign的基础上支持了Spring MVC的注解,如@RequesMapping等等。是SpringCloud中的第二代负载均衡客户端。
  • c、Feign本身不支持Spring MVC的注解,使用Feign的注解定义接口,调用这个接口,就可以调用服务注册中心的服务
    OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。在这里插入图片描述

openFeign的细粒度配置

日志等级有4种,分别是:

  • NONE【性能最佳,适用于生产】:不记录任何日志(默认值)。
  • BASIC【适用于生产环境追踪问题】:仅记录请求方法、URL、响应状态代码以及执行时间。
  • HEADERS:记录BASIC级别的基础上,记录请求和响应的header。
  • FULL【比较适用于开发及测试环境定位问题】:记录请求和响应的header、body和元数据。
    配置Feign的日志,首先配置springBoot的日志级别
    springBoot日志级别介绍
logging:
  level:
    com.msb: debug
1通过Java代码配置日志级别

设置日志级别

public class StockFeignConfiguration {

    @Bean
    public Logger.Level getLevel(){
        return  Logger.Level.FULL;
    }

配置日志级别细粒度配置 只有调用这里的service才有详细的日志信息

@FeignClient(name="msb-stock",configuration = StockFeignConfiguration.class)
public interface FeignClientService {

    @GetMapping("stock/reduce/{productId}")
    public void reduice(@PathVariable("productId") Integer productId);
2.通过属性的方式配置日志

取消上面的java代码中的日志配置
在配置文件中,添加属性配置

feign:
  client:
    config:
      msb-stock:
        loggerLevel: full
3.日志的全局配置
  • 通过java代码的方式配置
    1.就是将我们写的配置文件,日志级别交给spring管理 不推荐
    @Configuration  //添加配置注解
    public class StockFeignConfiguration {
    
    @Bean
    public Logger.Level getLevel(){
        return  Logger.Level.FULL;
    }
    
    2.在启动类的openFeign的时候配置
    @EnableFeignClients(defaultConfiguration = StockFeignConfiguration.class)//日志级别配置
    
  • 通过属性的方式配置全局日志
    只需要将细粒度配置的 应用名改为 default
feign:
 client:
   config:
     default:
       loggerLevel: full

openFeign支持的配置

1.锲约配置
  @Bean //springMvc相关的注解,就是通过这个解析的
   public Contract feignContract(){
       return new SpringMvcContract();
   }
2.编解码

默认使用spring的编解码
在这里插入图片描述
在这里插入图片描述

拦截器
添加拦截器
  • 实现RequestInterceptor
    添加请求头
    在这里插入图片描述- 注册拦截器
    在这里插入图片描述
  • 在服务端添加拦截器
    打印请求头
    在这里插入图片描述
  • 服务端注册拦截器
    在这里插入图片描述
  • 查看访问结果 打印请求头
    在这里插入图片描述

配置请求http请求客户端

默认的是default in client
在这里插入图片描述

  • 引入httpClient依赖
     <dependency>
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-httpclient</artifactId>
        </dependency>
  • 添加配置
 feign: 
  httpclient:
    enabled: true
    max-connections: 200
    max-connections-per-route: 50
  • debug 启动,查看是否走httpClient实现
    在这里插入图片描述
  • okHttp的引用依赖和配置
        <dependency>
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-okhttp</artifactId>
        </dependency>
feign:
  client:
    config:
      msb-stock:
        loggerLevel: full
  tokenId: 12232223
  okhttp:
    enabled: true
  httpclient:
    max-connections-per-route: 50

超时连接配置

只需要做以下配置就可以了。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenFeign 是一个声明式的 Web Service 客户端,它使得编写 Web Service 客户端变得更加简单。它的主要目的是使得将微服务之间的调用变得更加容易。 在 Spring Cloud 应用中,我们经常需要使用 Ribbon 和 Feign 进行服务调用,其中 Feign 封装了 Ribbon,使得我们在使用 Feign 时可以直接使用 Ribbon 的负载均衡能力。使用 Feign 可以让我们更加方便地调用 RESTful 服务。 下面是一个基本的 OpenFeign 示例: 1. 首先需要在 pom.xml 中添加以下依赖: ``` <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> ``` 2. 然后在启动类上添加 `@EnableFeignClients` 注解开启 Feign 功能: ``` @SpringBootApplication @EnableFeignClients public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 3. 创建一个 Feign 接口: ``` @FeignClient(name = "service-provider") public interface HelloService { @GetMapping("/hello") String hello(); } ``` 其中 `@FeignClient` 注解用来指定服务提供者的名称,`@GetMapping` 注解用来指定要调用的服务接口。 4. 在需要调用服务的地方注入 `HelloService` 接口即可: ``` @Service public class ConsumerService { @Autowired private HelloService helloService; public String hello() { return helloService.hello(); } } ``` 这样就可以通过 Feign 调用服务提供者的接口了。需要注意的是,Feign 默认使用的是 Spring MVC 的注解和 HttpMessageConverters,因此需要保证服务提供者和服务消费者使用的是相同的注解和 HttpMessageConverters。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值