Spring Cloud Alibaba快速整合OpenFeign

文章目录

  • spring cloud alibaba 整合OpenFeign
  • 整合流程
    • 1.导入依赖
    • 2. 编写调用接口
      • 2.1 service(这里写的是clients)
      • 2.2 controller
    • 3.设置其最大链接时间
      • 3.1 配置文件
      • 3.2 client
      • 3.3 接口
      • 3.4 被访问的controller

spring cloud alibaba 整合OpenFeign

  1. Foreign
  • Feign是Netflix开发的声明式、模板化的HTTP客户端, Feign可以帮助我们更快捷、优雅地调用HTTP API。
  • 在Spring Cloud中,使用Feign非常简单——创建一个接口,并在接口上添加一些注解,代码就完成了。Feign支持多种注解,例如Feign自带的注解或者JAX-RS注解等。
  • -Feign是一个声明式的Web服务客户端,让编写Web服务客户端变的更加容易。只需要创建一个接口并添加注解即可 openfeign
  1. OpenForeign
    Spring Cloud openfeign对Feign进行了增强,使其支持Spring MVC注解,另外还整合了Ribbon和Nacos,从而使得Feign的使用更加方便

  2. Feign和OpenFeign的区别:
    Feign是Spring Cloud组件中一个轻量级RESTful的HTTP服务客户端,Feign内置了Ribbon,用来做客户端负载均衡,去调用服务注册中心的服务。Feign的使用方式是:使用Feign的注解定义接口,调用接口,就可以调用服务注册中心的服务。
    OpenFeign是Spring Cloud在Feign的基础上支持了SpringMVC的注解,如@RequestMapping等等。OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并且 低耦合调用其他服务。

整合流程

直接采用最简单的方式

1.导入依赖

<!-- openfeign 远程调用 -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

2. 编写调用接口

无参

2.1 service(这里写的是clients)

@FeignClient("nacos-a")
public interface OrderClients {@GetMapping("/port")String order();
}

在这里插入图片描述

2.2 controller

   @GetMapping("/order")public String feignAClient(){String order = orderClients.order();return  order;}

在这里插入图片描述

3.设置其最大链接时间

配置类

@Configuration
public class FeignConfig
{//配置日志@BeanLogger.Level feignLoggerLevel(){return Logger.Level.FULL;}//配置最大链接时间 如果 使用 Request.Options 则默认
//    Connect Timeout: 10 seconds   链接时间
//    Read Timeout: 60 seconds      读取时间
//    Follow all 3xx redirects
// 不配置这个@Beanpublic Request.Options options() {return new Request.Options(5L,TimeUnit.SECONDS,10L,TimeUnit.SECONDS,true);}
}

也可使用配置文件 选择一个即可

# 这里设置order-service,应使用自己的
feign.client.config.order-service.connectTimeout=5000   
# 连接超时时间,默认10s order-service:  #对应微服务
feign.client.config.order-service.readTimeout=10000     
# 请求处理超时时间,默认60s

3.1 配置文件

#配置name
spring.application.name=nacos-a
server.port = 3030
#Nacos服务发现注册中心
spring.cloud.nacos.discovery.server-addr=192.168.14.58:8848
#spring.cloud.nacos.discovery.register-enabled=true
logging.level.com.hb = debug
#配置具体某一个服务个性化规则
spring.cloud.nacos.discovery.ip=192.168.14.53
spring.cloud.nacos.discovery.metadata.name=lihaibo
#nacos-a.ribbon.NFLoadBalancerRuleClassName=com.hb.rule.MyRule

3.2 client

@FeignClient("nacos-a")
public interface OrderClients {@GetMapping("/port")String order();@GetMapping("/sleep")String sleep(@RequestParam("second") Integer second);
}

3.3 接口

@GetMapping(“/sleep”)
public String sleep(@RequestParam(“s”) Integer s){
String order = orderClients.sleep(s);
return order;
}

3.4 被访问的controller

@GetMapping("/sleep")
public String  sleep(Integer second){ThreadUtil.safeSleep(second * 1000);return "睡了"+second+"s";
}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL8.0版安装教程 + Workbench可视化配置教程(史上最细、一步一图解)

文章目录 一、安装MySQL1、选择版本&#xff0c;点击“Download”进行下载2、双击下载好的安装包&#xff0c;点击运行3、选择安装类型为“Custom”4、依次进行选择&#xff0c;选到MySQL Servers 8.0.33 -X64&#xff0c;点击向右的箭头5、选中MySQL Servers 8.0.33 -X64&…

Docker搭建DNS服务器--nouse

前言 DNS服务器是(Domain Name System或者Domain Name Service)域名系统或者域名服务,域名系统为Internet上的主机分配域名地址和IP地址。 安装 2.1 实验环境 IP 系统版本 角色 192.168.40.121 Ubuntu 22.10 DNS服务器 192.168.40.122 Ubuntu 22.10 测试机器 2.2 …

day03_基础语法

今日内容 零、复习昨日 一、Idea安装&#xff0c;配置 二、Idea使用 三、输出语句 四、变量 五、数据类型 附录: 单词 零、 复习昨日 1 装软件(typora,思维导图) 2 gpt(学会让他帮你解决问题) 3 java发展(常识) 4 HelloWorld程序 5 编码规范 6 安装jdk,配置环境变量 电脑常识 任…

Django的设计模式及模板层

Django的设计模式及模板层 设计模式MVC和MVT MVC 代表 Model-View-Controller(模型-视图-控制器)模式。 M 模型层(Model),主要用于对数据库层的封装 V 视图层(View),用于向用户展示结果 (WHAT HOW) C 控制(Controller&#xff0c;用于处理请求、获取数据、返回结果(重要) 作…

PHP8的类与对象的基本操作之成员变量-PHP8知识详解

成员变量是指在类中定义的变量。在类中可以声明多个变量&#xff0c;所以对象中可以存在多个成员变量&#xff0c;每个变量将存储不同的对象属性信息。 例如以下定义&#xff1a; public class Goods { 关键字 $name; //类的成员变量 }成员属性必须使用关键词进行修饰&#xf…

stm32之ADC

ADC是什么&#xff1f;模拟数字转换器&#xff08;Analog-to-Digital Converter&#xff09;。 一、ADC概述 stm32f013c8t6有两个ADC&#xff0c;精度为 12 位&#xff0c;每个 ADC 最多有 16 个外部通道、2个内部通道&#xff08;温度传感器、内部参考电压&#xff09;。实际s…

【Cpp】位图Bitmap

code #include <iostream> #include <vector> #include <stdio.h> #include <stdint.h>class Bitmap { private:std::vector<uint8_t> data; // 存储位图数据的字节数组uint32_t size; // 位图的大小&#xff08;以位为单位&#x…

大数据从入门到精通(超详细版)之Hive的案例实战,ETL数据清洗!!!

前言 嗨&#xff0c;各位小伙伴&#xff0c;恭喜大家学习到这里&#xff0c;不知道关于大数据前面的知识遗忘程度怎么样了&#xff0c;又或者是对大数据后面的知识是否感兴趣&#xff0c;本文是《大数据从入门到精通&#xff08;超详细版&#xff09;》的一部分&#xff0c;小…

基于FPGA的图像直方图统计实现,包括tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、图像数据传输 4.2、直方图统计算法 4.3、时序控制和电路设计 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 vivado2019.2 matlab2022a 3.部分核心程序 timescal…

使用 PyTorch 的计算机视觉简介 (5/6)

一、说明 本文主要介绍CNN中在pytorch的实现&#xff0c;其中VGG16网络&#xff0c;数据集来源&#xff0c;以及训练过程&#xff0c;模型生成和存储&#xff0c;模型调入等。 二、预训练模型和迁移学习 训练 CNN 可能需要大量时间&#xff0c;并且该任务需要大量数据。但是&am…

Qt5开发及实例V2.0-第十八章-Qt-MyselfQQ实例

Qt5开发及实例V2.0-第十八章-Qt-MyselfQQ实例 第18章-Qt MyselfQQ18.1 概述18.2 、发送文件18.3 、接收文件18.4 、保证传输的安全和稳定18.5 、总结 本章相关例程源码下载1.Qt5开发及实例_CH1801.rar 下载 第18章-Qt MyselfQQ 18.1 概述 MyselfQQ是一个基于Qt5框架开发的轻量…

如何快速走出网站沙盒期(关于优化百度SEO提升排名)

网站沙盒期是指新建立的网站在百度搜索引擎中无法获得好的排名&#xff0c;甚至被完全忽略的现象。这个现象往往发生在新建立的网站上&#xff0c;因为百度需要时间来评估网站的质量和内容。蘑菇号www.mooogu.cn 为了快速走出网站沙盒期&#xff0c;需要优化百度SEO。以下是5个…