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

SpringCloud OpenFeign 远程调用(RPC)

目录

1 概念导入

2 添加依赖

3 在启动类上添加注解

4 编写对应的接口

5 注入并调用

6 日志

7 超时控制

8 超时重试

9 拦截器

10 Fallback兜底

1 概念导入

2 添加依赖

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

3 在启动类上添加注解

@EnableFeignClients 

4 编写对应的接口

package com.ax.order.feign;import com.ax.product.bean.Product;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;@FeignClient(name = "service-product")
public interface ProductFeignClient {/*** 测试FeignClient** @param id*///mvc注解两套使用逻辑//标注在Controller上,为接收请求//标注在FeignClient上,为发送请求@GetMapping("/product/{id}")Product getProductById(@PathVariable("id") Long id);//如果调用自己其他服务的api直接将其方法复制过来即可,下面这个就是从product当中复制过来的@GetMapping("/product/{id}")Product getProduct(@PathVariable("id") Long id);
}

5 注入并调用

    @Autowiredprivate ProductFeignClient productFeignClient;@Overridepublic Order createOrder(Long productId, Long userId) {// Product product = getProductFromRemote3(productId);Product product = productFeignClient.getProductById(productId);Order order = new Order();order.setId(1L);// 远程调用计算商品数额order.setTotalAmount(product.getPrice().multiply(new BigDecimal(product.getNum())));order.setUserId(userId);order.setNickName("张三");order.setAddress("青岛");// 远程调用获取商品信息order.setProductList(Arrays.asList(product));return order;}

6 日志

配置文件:

logging:level:com.ax.order.feign: debug

添加到容器中进行管理:

    @BeanLogger.Level feignLoggerLevel() {return Logger.Level.FULL;}

输出样式:

7 超时控制

超时:

相关配置:

spring:cloud:openfeign:client:config:default:logger-level: fullconnect-timeout: 1000read-timeout: 2000service-product:logger-level: fullconnect-timeout: 3000read-timeout: 5000

8 超时重试

9 拦截器

10 Fallback兜底

http://www.dtcms.com/a/354852.html

相关文章:

  • Web网络开发 -- 常见CSS属性
  • 前端RSA加密遇到Java后端解密失败的问题解决
  • 创建uniApp小程序项目vue3+ts+uniapp
  • 文档格式转换软件 一键Word转PDF
  • PDF转长图工具,一键多页转图片
  • 【Deepseek】Windows MFC/Win32 常用核心 API 汇总
  • Spring Boot对访问密钥加解密——HMAC-SHA256
  • Docker Swarm 与 Kubernetes (K8s) 全面对比教程
  • SMU算法与人工智能创新实践班SMU2025 Summer 7th 参考题解
  • 虚幻基础:角色变换角色视角蒙太奇运动
  • Python篇---返回类型
  • 安卓/ios按键精灵脚本开发工具:OpenCV.FindImgAll命令介绍
  • 工业电子看板赋能线缆工厂生产高效运转
  • 可扩展系统设计的黄金法则与Go语言实践|得物技术
  • 血缘元数据采集开放标准:OpenLineage Integrations Apache Airflow Usage
  • 2026届大数据毕业设计选题推荐-基于大数据景点印象服务系统 爬虫数据可视化分析
  • 【Linux】linux中线程的引出
  • 视频软解码技术详解:原理、应用与未来发展
  • 计算机网络:(poll、epoll)
  • 贴片式SD卡在北京君正与瑞芯微平台上的应用对比与实践解析
  • MCU平台化实践方案
  • DevOps篇之Jenkins实现k8s集群版本发布以及版本管理
  • 趣味学Rust基础篇(函数)
  • ABeam中国 | 中国汽车市场(5)——软件定义汽车(SDV)的智能化应用场景
  • 智能体架构的十字路口:深度剖析Block的“通用平台”与GSK的“垂直模型”
  • 设计模式:组合模式(Composite Pattern)
  • ArcGIS:如何设置地图文档的相对路径或者发布为地图包
  • 5.1 操作系统概述
  • Cesium 入门教程(十一):Camera相机功能展示
  • SplinePSF——应用于光学成像中的 PSF 建模