首页 > 其他分享 >Open Feign

Open Feign

时间:2024-05-28 09:23:27浏览次数:19  
标签:Feign EnableFeignClients feign api 日志 Open cloud

  1. OpenFeign 是一个基于 Spring 的声明式、模板化的 HTTP 客户端,它简化了编写 Web 服务客户端的过程。用户只需创建一个接口并添加相应的注解,即可实现对远程服务的调用。Spring Cloud OpenFeign 对 Feign 进行了二次封装,使得在 Spring Cloud 中使用 Feign 的时候,可以做到使用 HTTP 请求访问远程服务,就像调用本地方法一样的,开发者完全感知不到这是在调用远程访问,更感知不到在访问 HTTP 请求。

  2. 快速开始

    • 引入依赖
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-loadbalancer</artifactId>
    </dependency>
    
    • 编写调用接口,并使用@FeignClient注解
    @FeignClient(name = "order-service",path ="/order")
    public interface ServuceFeignClient {
    
            @RequestMapping("/queryByUserId/{userId}")
            List<User> queryByUserId(@PathVariable Long userId);
    
            @RequestMapping("/getPort")
            Integer getPort();
    }
    
    • 在启动类添加@EnableFeignClients 注解
  3. 由于每次请求都要创建Client,所以引入okhttp,可以进行连接池的设置

    • 引入依赖
        <dependency>
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-okhttp</artifactId>
        </dependency>
    
    • 进行配置
    feign:
      okhttp:
        enabled: true
    
  4. 最佳实践:采用抽取方式

    • 将Feign的Client抽取为独立模块,并且把接口有关的POJO、默认的Feign配置都放到这个模块中,提供给所有消费者使用。

    • 首先创建一个module,命名为feign-api,在feign-api中引入spring-cloud-starter-openfeign依赖

    • 将与feign有关的Clients接口,实体类,配置类都复制到feign-api中

    • 在其他可能会用到feign的模块中引入feign-api的包

    • 重启后可能会发生错误,因为你得feign-api的模块中给的Clients在cn.itcast.feign.clients包中,而要调用feign的order-service的 @EnableFeignClients 注解是在cn.itcast.order 包下,不在同一个包,无法扫描到Clients。为解决这个问题可以指定feign应该扫描的包

    @EnableFeignClients(basePackages = "orderservice.feign.clients")
    
  5. feign的日志

    • 基于Java代码来修改日志级别,先声明一个类,再声明一个Logger.Level的对象
    /**
     * OpenFeign的配置
     */
    public class DefaultFeignConfiguration {
     
        /**
         * 配置日志基本
         * @return
         */
        @Bean
        public Logger.Level feignLogLevel(){
            return Logger.Level.BASIC; // 日志级别为BASIC
        }
    }
    
    • 全局生效,将其放到 启动类的@EnableFeignClients这个注解中
    @EnableFeignClients(defaultConfiguration = DefaultFeignConfiguration .class) 
    
    • 局部生效,放到对应的@FeignClient这个注解
    @FeignClient(value = "userservice", configuration = DefaultFeignConfiguration .class) 
    
    • 配置文件方式
    # 针对某个微服务的配置  userservice:微服务名称  FULL:日志级别
    feign.client.config.userservice.logger-level=FULL
    # 这里用default就是全局配置,如果是写服务名称,则是针对某个微服务的配置
    #feign.client.config.default.logger-level=FULL
    
    • 日志级别
    日志的级别分为四种:
    
    - NONE:不记录任何日志信息,这是默认值。
    - BASIC:仅记录请求的方法,URL以及响应状态码和执行时间
    - HEADERS:在BASIC的基础上,额外记录了请求和响应的头信息
    - FULL:记录所有请求和响应的明细,包括头信息、请求体、元数据。
    

标签:Feign,EnableFeignClients,feign,api,日志,Open,cloud
From: https://www.cnblogs.com/hytip/p/18216659

相关文章

  • Vue+OpenLayers7入门到实战:OpenLayers实现在地图上拖拽编辑修改绘制图形
    返回《Vue+OpenLayers7》专栏目录:Vue+OpenLayers7入门到实战前言本章介绍如何使用OpenLayers7在地图上拖拽编辑修改绘制图形。在前面一章中,我们已经学会了如何绘制基础的三种图形线段、圆形和多边形:《Vue+OpenLayers7入门到实战:OpenLayers图形绘制功能,OpenLayers实现在地......
  • OpenQA.Selenium.WebDriverException The HTTP request to the remote WebDriver serv
    OpenQA.Selenium.WebDriverException:“TheHTTPrequesttotheremoteWebDriverserverforURLhttp://localhost:xxxx/sessiontimedoutafter60seconds.”1.在谷歌浏览器上加上中括号中的内容[--remote-debugging-port=9222]2.使用管理员模式打开谷歌浏览器3.重新生成......
  • # 使用RAG-GPT集成智谱AI、DeepSeek快速搭建OpenAI Cookbook智能客服
    引言前面介绍了使用RAG-GPT和OpenAI快速搭建LangChain官网智能客服,目前国内也有一些比较不错的云端大模型API服务。本文将介绍通过RAG-GPT集成智谱AI和DeepSeek,快速搭建OpenAICookbook智能客服。RAG技术原理介绍在介绍RAG-GPT项目之前,我们首先要理解RAG的基本原理,RAG在问答系......
  • 使用OpenSSL生成证书和私钥文件
    使用OpenSSL生成证书和私钥文件,请按以下步骤操作:第1步:生成RSA私钥opensslgenrsa-outprivate_key.pem2048参数-out指定生成的私钥文件名,参数2048指定生成的RSA私钥以位为单位的长度,常见的取值:1024、2048、3072、4096,较长的密钥通常提供更高的安全性,但可能导致性能下降......
  • 【OpenVINO™】在C#中使用 OpenVINO™ 部署 YOLOv10 模型实现目标
     最近YOLO家族又添新成员:YOLOv10,YOLOv10提出了一种一致的双任务方法,用于无nms训练的YOLOs,它同时带来了具有竞争力的性能和较低的推理延迟。此外,还介绍了整体效率-精度驱动的模型设计策略,从效率和精度两个角度对YOLOs的各个组成部分进行了全面优化,大大降低了计算开销,增强了......
  • OpenCV算法解析 - 最小二乘法&RANSAC思想
    OpenCVOpenCV是一个开源的计算机视觉库,可以从http://opencv.org获取。OpenCV库用C语言和C++语言编写,可以在Windows、Linux、MacOSX等系统运行。同时也在积极开发Python、Java、Matlab以及其他一些语言的接口,将库导入安卓和iOS中为移动设备开发应用。OpenCV设......
  • OpenAI CEO坚称公司的 AI 技术安全可广泛使用
        大家好,我是AI科技智库(www.aigchouse.com),国内Top10计算机博士毕业,创办了一站式AI工具、资料、课程资源学习平台,每日持续更新。通过分享最新AI工具、资源、变现指南等,帮助更多人了解使用AI,提升工作和学习效率。这里有海量AI工具整合包、AI变现指南、AI学习资料、AI免费......
  • 在openkylin上编译UKUI开源组件
    目录一、准备工作二、搭建Qt编译环境三、编译UKUI开源组件这里就不赘述怎么安装openkylin系统了,可以虚拟机安装也可以使用本地安装,UKUI桌面环境主要是使用Qt开发,下面讲解从搭建Qt编译环境到编译开源组件,这里使用的openkylin系统是openkylin2.0nile 一、准备工作打开......
  • 深度学习之基于Python+OpenCV+Tensorflow+Keras实时口罩检测系统
    欢迎大家点赞、收藏、关注、评论啦,由于篇幅有限,只展示了部分核心代码。文章目录一项目简介二、功能三、系统四.总结一项目简介  一、项目背景与意义在全球公共卫生背景下,口罩成为了重要的防护工具。特别是在疫情流行期间,确保公共场所的人们佩戴口罩对于防......
  • 如何在 Ubuntu 22.04 上安装 OpenLDAP(转载)
    本教程适用于这些操作系统版本 Ubuntu22.04(JammyJellyfish)Ubuntu20.04(FocalFossa) 在此页 先决条件设置FQDN(完全限定域名)安装OpenLDAP包配置OpenLDAP服务器设置基本组添加新组添加OpenLDAP用户安装LDAP帐户管理器配置LDAP帐户管理器结论 ......