SpringCloud alibaba整合OpenFeign

目录

一、为什么使用OpenFeign

二、准备两个服务

三、最简单使用- 返回字符串

①引入openfeign依赖

②调用端在启动类上添加@EnableFeignClients注解

③在被调用端写一个简单的接口

④在调用端新建一个service类 专门用于远程调用 

​编辑 ⑤ 在调用端写一个conteoller 注入这个service,再调用这个方法

⑥ 访问,看看是否可以远程调用

四、返回一个对象(OderOKDTO)

①被调用的服务

②调用端 openservice

③controller

​编辑 五、返回对象结合有参使用

①被调用者

②远程调用

​编辑 ③ controller

六、条件查询(按id或者userId查询),不加注解会报405错误

七、日志配置(重点掌握配置文件形式)

7.1 全局配置

7.2 局部配置

7.3 在配置文件配置

八、 超时配置

8.1 全局配置

8.2 配置文件中配置

九、契约配置(了解)

十、源码参考


一、为什么使用OpenFeign

    OpenFeign 是一个Java语言编写的声明式服务客户端,它允许开发者通过编写接口和注解来定义对远程服务的调用,而无需关注底层HTTP请求的具体实现细节。通过集成到Spring Cloud环境中,它可以无缝结合服务发现、负载均衡以及Hystrix断路器等功能,从而大大简化了微服务间的相互调用。开发者只需对接口方法添加相应的HTTP注解,如@RequestMapping、@GetMapping等,OpenFeign就会依据这些注解生成并代理远程服务的接口,使得服务间调用就像调用本地方法一样直观和方便。

二、准备两个服务

一个是订单服务,一个是用户服务,用户服务去调用订单服务

三、最简单使用- 返回字符串

在服务调用方使用openfeign

①引入openfeign依赖

<!-- openfeign 远程调用 -->

<dependency>

   <groupId>org.springframework.cloud</groupId>

  <artifactId>spring-cloud-starter-openfeign</artifactId>

</dependency>

②调用端在启动类上添加@EnableFeignClients注解

③在被调用端写一个简单的接口

④在调用端新建一个service类 专门用于远程调用 
 ⑤ 在调用端写一个conteoller 注入这个service,再调用这个方法

⑥ 访问,看看是否可以远程调用

四、返回一个对象(OderOKDTO)

①被调用的服务

②调用端 openservice

③controller

 五、返回对象结合有参使用

①被调用者

②远程调用
 ③ controller

六、条件查询(按id或者userId查询),不加注解会报405错误

  •   @SpringQueryMap 注解是Spring Cloud OpenFeign提供的一个扩展注解,用于处理HTTP GET请求中的查询参数。当我们在OpenFeign中定义一个接口方法,并且需要传递一组复杂的查询参数时,可以使用此注解来绑定一个POJO(Plain Old Java Object)对象或Map类型的数据结构,以便自动将其中的属性转换为请求URL中的查询参数。
  • 简单一句话,能将对象或者Map中的key-value自动拼接到get查询,拼接问号传参。

 ①被调用者

②远程调用

 ③ controller

七、日志配置(重点掌握配置文件形式)

有时候我们遇到 Bug,比如接口调用失败、参数没收到等问题,或者想看看调用性能,就需要配置 Feign 的日志了,以此让 Feign 把请求信息输出来。

Feign 提供了日志打印功能,我们可以通过配置来调整日志级别,从而了解 Feign 中 Http 请求的细节。说白了就是对Feign接口的调用情况进行监控和输出

通过源码可以看到日志等级有 4 种,分别是:

  • NONE【性能最佳,适用于生产】:不记录任何日志(默认值)。

  • BASIC【适用于生产环境追踪问题】:仅记录请求方法、URL、响应状态代码以及执行时间。

  • HEADERS:记录BASIC级别的基础上,记录请求和响应的header。

  • FULL【比较适用于开发及测试环境定位问题】:记录请求和响应的header、body和元数据。

7.1 全局配置

注意一:此处配置@Configuration注解就会全局生效,如果想指定对应某一个服务生效,就不能配置.

注意二: 因为feign调试日志是debug级别输出,springboot默认的日志级别是info,所以feign的debug日志级别就不会输出,一定要结合

logging.level.com.beiyou = debug

@Configuration
public class FeignConfig
{
    @Bean
    Logger.Level feignLoggerLevel()
    {
        return Logger.Level.FULL;
    }
}

Java

7.2 局部配置

局部配置,让调用的微服务生效,在@FeignClient 注解中指定使用的配置类



7.3 在配置文件配置

logging.level.com.beiyou = debug开启日志
##配置feign 的日志级别
#-- default 全局配置
feign.client.config.default.loggerLevel=NONE
#-- nacos-a 具体服务名
feign.client.config.nacos-a.loggerLevel=FULL

CoffeeScript



八、 超时配置

通过 Options 可以配置连接超时时间和读取超时时间

8.1 全局配置

@Configurationpublic class FeignConfig {    @Bean    public Request.Options options() {      return new Request.Options(10L, TimeUnit.SECONDS, 60L,TimeUnit.SECONDS,true);    }}

Java



8.2 配置文件中配置

#全局配置feign.client.config.default.connectTimeout=5000
feign.client.config.default.readTimeout=10000
这里default 是一个特殊的客户端名称,用于表示全局配置。设置 connectTimeout 和 readTimeout 属性的值来定义全局的连接超时时间和读取超时时间。
#局部配置 请将 <clientName> 替换为实际的Feign客户端名称。feign.client.config.<clientName>.connectTimeout=5000
feign.client.config.<clientName>.readTimeout=10000
feign.client.config.order-service.connectTimeout=5000   # 连接超时时间,默认10s order-service:  #对应微服务feign.client.config.order-service.readTimeout=10000     # 请求处理超时时间,默认60s


Swift

补充说明: Feign的底层用的是Ribbon,但超时时间以Feign配置为准

http://https://blog.csdn.net/xcg340123/article/details/136021389

九、契约配置(了解)

Spring Cloud 在 Feign 的基础上做了扩展,使用 Spring MVC 的注解来完成Feign的功能。原生的 Feign 是不支持 Spring MVC 注解的,如果你想在 Spring Cloud 中使用原生的注解方式来定义客户端也是可以的,通过配置契约来改变这个配置,Spring Cloud 中默认的是 SpringMvcContract。

Spring Cloud 1 早期版本就是用的原生Fegin. 随着netflix的停更替换成了Open feign

1)修改契约配置,支持Feign原生的注解

注意:修改契约配置后,OrderFeignService 不再支持springmvc的注解,需要使用Feign原生的注解

/** * 修改契约配置,支持Feign原生的注解 * @return */@Beanpublic Contract feignContract() {    return new Contract.Default();}

Plain Text

2)OrderService 中配置使用Feign原生的注解

@FeignClient(value = "order-service")public interface OrderService {    @RequestLine("GET /hello")    public String hello();}

Java

3)也可以通过yml配置契约

feign:  client:    config:      order-service:  #对应微服务        loggerLevel: FULL        contract: feign.Contract.Default   #指定Feign原生注解契约配置

十、源码参考

源码已经放入云效

https://codeup.aliyun.com/62858d45487c500c27f5aab5/spring-cloud-alibaba-root.git

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/573240.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

翻译《The Old New Thing》 - What does SHGFI_USEFILEATTRIBUTES mean?

What does SHGFI_USEFILEATTRIBUTES mean? - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20040601-00/?p39073 Raymond Chen 2004年06月01日 在使用 SHGetFileInfo 函数时&#xff0c;你可以设置一个名为 SHGFI_USEFILEATTRIBUTES 的标志…

绿联搭建rustdesk服务器

绿联搭建rustdesk服务器&#xff0c;不再使用向日葵 注意&#xff1a;本服务器需要有动态公网IP以及自己的域名&#xff0c;ipv6未测试。 1. 拉取镜像 rustdesk/rustdesk-server-s6:latest 注意是这个-s6的镜像。 2. 部署镜像 2.1 内存配置 本服务器比较省内存&#xff0…

区块链安全应用-------压力测试

基于已有的链进行测试&#xff08;build_chain默认建的链 四个节 点&#xff09;&#xff1a; 第一步&#xff1a;搭链 1. 安装依赖 在ubuntu操作系统中&#xff0c;操作步骤如下&#xff1a; sudo apt install -y openssl curl 2. 创建操作目录, 下载安装脚本 ## 创建操作…

力扣数据库题库学习(4.22日)

577. 员工奖金 问题链接 思路分析 Employee表与Bonus表通过empId字段可以连接&#xff0c;需求是查出奖金少于1000的员工名和奖金值。 这里奖金少于1000的情况就是没有奖金有奖金但少于1000 这里我给出的解决方案就是使用左连接&#xff0c;将Employee表作为左表&#xff…

js的算法-交换排序(冒泡)

交换排序 所谓交换排序&#xff0c;是指根据序列中两个元素关键字的比较结果来对换这两个记录在序列中的位置。基于交换的排序算法很多&#xff0c;本次介绍冒泡排序和快速排序。 冒泡 基本思想 从后往前&#xff08;或从前往后&#xff09;两两比较相邻元素的值&#xff0…

Nginx第3篇-使用ngx_http_proxy_connect_module配置https正向代理

场景 我使用python爬虫&#xff0c;然后需要个代理&#xff0c;所以就用Nginx搭了一个代理服务器。对Nginx也不太熟&#xff0c;慢慢摸索&#xff0c;搭建完之后发现只能代理http的请求&#xff0c;无法穿透https。几经折腾和摸索发现一个强大的HTTP代理模块&#xff1a;ngx_h…

泛微OA对接北森HR系统场景解析

随着企业信息化建设的深入推进&#xff0c;跨系统集成已成为提升管理效率、实现数据一体化的关键举措。详细阐述其如何通过泛微OA&#xff08;Office Automation&#xff09;系统与北森HR&#xff08;Human Resource&#xff09;系统的深度对接&#xff0c;实现人员信息、员工请…

RIP最短路实验(思科)

华为设备参考&#xff1a;RIP最短路实验&#xff08;华为&#xff09; 一&#xff0c;技术简介 RIP&#xff08;Routing Information Protocol&#xff0c;路由信息协议&#xff09;是一种基于距离矢量的内部网关协议&#xff0c;工作原理是每个路由器周期性地向邻居路由器发…

深度解析 Spring 源码:揭秘BeanFactory 之谜

文章目录 一、认识BeanFactory1.1 BeanFactory的概述1.2 BeanFactory与 ApplicationContext的区别 二、BeanFactory源码解读2.1 BeanFactory 接口2.1.1 getBean()2.1.2 containsBean()2.1.3 isSingleton() 2.2 DefaultListableBeanFactory 类2.2.1 registerBeanDefinition()2.2…

游戏行业干货科普 | 各个诚实都有哪些游戏公司?

本文主要列举上海、北京、广州、深圳、成都、杭州等城市游戏公司名称&#xff0c;大家可以码住&#xff0c;慢慢看~ 上海 米哈游 游戏势力新一极&#xff0c;近十年唯一一家打破腾讯、网易二强局面的公司莉莉丝 卡牌自研头部&#xff0c;SLG发行头部&#xff0c;最懂商业化的…

创建Maven项目的时候让选择maven模板

创建Maven项目的时候让选择maven模板 心得 工欲利其事 必先利其器。如果你想要干成一件事 那么必须先要精通对应的工具使用。之前我不太注重工具 我觉得只要代码写的好就可以了 但是当我们了解了产品经理的一些思想之后&#xff0c;我才明白一个好的产品是可以给用户提供多大…

文件上传方式三(若伊版本)

1.准备配置类 package com.ruoyi.screen.core;public class MimeTypeUtils {public static final String IMAGE_PNG "image/png";public static final String IMAGE_JPG "image/jpg";public static final String IMAGE_JPEG "image/jpeg";pu…

Stable Diffusion中的embedding

Stable Diffusion中的embedding 嵌入&#xff0c;也称为文本反转&#xff0c;是在 Stable Diffusion 中控制图像样式的另一种方法。在这篇文章中&#xff0c;我们将学习什么是嵌入&#xff0c;在哪里可以找到它们&#xff0c;以及如何使用它们。 什么是嵌入embedding&#xf…

Axure设计美观友好的后台框架页

使用Axure设计后台框架页 优点介绍&#xff1a; **1、使用中继器灵活配置菜单项&#xff1b; 2、二级菜单面板跟随一级菜单位置显示&#xff1b; 3、菜单链接打开后&#xff0c;联动添加tab标签&#xff1b; 4、标签页与iframe内容联动&#xff0c;可关闭&#xff1b; 5、左侧…

SpringBoot集成Sharding-JDBC实现主从同步

SpringBoot集成Sharding-JDBC实现主从同步 1.mysql主从配置2.application.properties文件配置3.测试3.1 查询数据3.2 添加数据 1.mysql主从配置 详细内容请参考上一篇文章&#xff1a;MySQL8.0以上实现主从同步配置 2.application.properties文件配置 # ShardingSphere conf…

通过本机端口映射VMware中虚拟机应用(例如同一局域网别人想远程连接你虚拟机中的数据库)

需要 虚拟机中安装一下达梦数据库&#xff0c;并且以后大家都连接你虚拟机中达梦数据库进行开发。。。。。。在不改动自己虚拟机配置&#xff0c;以及本地网卡任何配置的情况下如何解决&#xff1f;本虚拟机网络一直使用的NAT模式。 解决 找到NAT设置添加端口转发即可解决。…

Git for Windows 下载与安装

当前环境&#xff1a;Windows 8.1 x64 1 打开网站 https://git-scm.com/ &#xff0c;点击 Downloads 。 2 点击 Windows 。 3 选择合适的版本&#xff0c;这里选择了 32-bit Git for Windows Portable。 4 解压下载后的 PortableGit-2.44.0-32-bit.7z.exe &#xff0c;并将 P…

运营商三要素核验接口-手机实名验证API

运营商三要素核验接口是一种API&#xff08;Application Programming Interface&#xff0c;应用程序编程接口&#xff09;&#xff0c;主要用于通过互联网技术对接通信运营商的实名制数据库&#xff0c;以验证用户提供的手机号码、身份证号码、姓名这三项关键信息&#xff08;…

乐鑫的ESP32-S3芯片的LE能实现beacon功能吗?

最近帮一个客户做ESP32定位器方案&#xff0c;客户提出这个疑问&#xff0c;乐鑫的ESP32-S3芯片的LE能实现beacon功能吗&#xff1f;针对这个问题&#xff0c;启明云端工程师小启给出这样的回复。 回答是可以的&#xff0c;大家可以看idf的例程。 ESP-IDF iBeacon demo From …

19 使用MapReduce编程统计超市1月商品被购买的次数

首先将1月份的订单数据上传到HDFS上&#xff0c;订单数据格式 ID Goods两个数据字段构成 将订单数据保存在order.txt中&#xff0c;&#xff08;上传前记得启动集群&#xff09;。 打开Idea创建项目 修改pom.xml&#xff0c;添加依赖 <dependencies><dependency>…