当前位置: 首页 > news >正文

openFeign服务调用

简介

Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。它的使用方法是定义一个服务接口然后在上面添加注解。
Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。

一句话:定义微服务的接口,加入Feign相关注解就能实现微服务之间的调用。

使用

  1. 加入依赖:
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
  1. 在主启动类上加入@EnableFeignClients
  2. 定义服务接口
    这里表明getPaymentById会调用"CLOUD-PAYMENT-SERVICE"服务上的"/payment/get/{id}"接口。
    等价于之前的http://CLOUD-PAYMENT-SERVICE/payment/get/id
@Component
@FeignClient("CLOUD-PAYMENT-SERVICE")
public interface PaymentFeignService {@GetMapping("/payment/get/{id}")public CommonResult<Payment> getPaymentById(@PathVariable("id") Long id);//与服务方controller中方法名保持一致
}

注意:@PathVariable 中一定要写"id",因为feign向前兼容JDK1.5之前需要写。

  1. controller层注入调用
	@Resourceprivate PaymentFeignService paymentFeignService;@GetMapping("/consumer/payment/get/{id}")public CommonResult getPaymentById(@PathVariable Long id){return paymentFeignService.getPaymentById(id);}

特性

内置ribbon提供负载均衡
超时控制,消费断1s内没有接收到响应则报错。
日志增强。

设置超时时间:

application.yml

feign:client:config:default:connect-timeout: 5000read-timeout: 5000
日志增强:

配置类:

@Configuration
public class FeignConfig {@BeanLogger.Level feiginLoggerLever(){return Logger.Level.FULL;}
}

在application.yml中添加日志需要记录的接口:

logging:level:org.example.springcloud.service.PaymentFeignService: debug

再次运行,调用接口时会出现下面的日志情况。
在这里插入图片描述

相关文章:

  • 惊人技术!重新定义人机互动:深入了解神经链接的脑机接口技术
  • Android studio 花式按键
  • 【AIGC-图片生成视频系列-6】SSR-Encoder:用于主题驱动生成的通用编码器
  • Golang高质量编程与性能调优实战
  • 分类模型评估方法
  • 基于多反应堆的高并发服务器【C/C++/Reactor】(中)创建并初始化TcpServer实例 以及 启动
  • C#编程-使用集合
  • 基于SSM的校园二手交易平台
  • StreamPark + PiflowX 打造新一代大数据计算处理平台
  • 软件测试错题集(黑盒、白盒测试)
  • wsl(ubuntu)创建用户
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • 终端上的GitHub Copilot以及IDE上的GitHub Copilot
  • MySQL之CRUD、常见函数及union查询
  • 一、初识Redis与分布式系统
  • [数据结构]链表的实现在PHP中
  • Angular4 模板式表单用法以及验证
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • nfs客户端进程变D,延伸linux的lock
  • node 版本过低
  • nodejs:开发并发布一个nodejs包
  • python大佬养成计划----difflib模块
  • python学习笔记 - ThreadLocal
  • React-生命周期杂记
  • Redis中的lru算法实现
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • SpiderData 2019年2月16日 DApp数据排行榜
  • Vultr 教程目录
  • webgl (原生)基础入门指南【一】
  • 阿里云Kubernetes容器服务上体验Knative
  • 百度小程序遇到的问题
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 聊聊redis的数据结构的应用
  • 深度学习在携程攻略社区的应用
  • 深入浅出webpack学习(1)--核心概念
  • 使用API自动生成工具优化前端工作流
  • 双管齐下,VMware的容器新战略
  • 微服务入门【系列视频课程】
  • 用quicker-worker.js轻松跑一个大数据遍历
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • (02)vite环境变量配置
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (C语言)共用体union的用法举例
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (poj1.3.2)1791(构造法模拟)
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (附源码)计算机毕业设计高校学生选课系统
  • (南京观海微电子)——I3C协议介绍
  • (转)EXC_BREAKPOINT僵尸错误
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .“空心村”成因分析及解决对策122344
  • .net 怎么循环得到数组里的值_关于js数组
  • :如何用SQL脚本保存存储过程返回的结果集