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

Feign实战

一、前置知识

在springcloud中,微服务之间通过网络请求调用彼此的方法。常用的有工具有RestTemplate、HttpCilent、OkHttp等,这些工具在调用方法前需要构建url,比如拼接参数等。随着参数增多,url地址也会变长,参数还必须要一一对应,没有提示,需要自行检查,较为复杂。比如RestTemplate调用远程服务的代码如下:

    @RequestMapping("/test")public String test(){String url = String.format("http://%s/loadTest", "spring-cloud-eureka-product");ResponseEntity<String> forEntity = restTemplate.getForEntity(url, String.class);return forEntity.getBody();}

而Feign通过调用本地方法的形式调用远程服务,从而简化了微服务彼此的调用方式。同时Feign是基于Ribbon的,因此自带负载均衡功能,无需额外配置。

二、Feign实战

项目使用的是Ribbon实战中的例子。

2.1 引入坐标依赖

在服务消费者order中引入feign依赖,如下所示。

        <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>

2.2 开启Feign功能

在启动类上加入@EnableFeignClients注解开启功能

@SpringBootApplication
@EnableFeignClients
public class SpringCloudEurekaOrderApplication {public static void main(String[] args) {SpringApplication.run(SpringCloudEurekaOrderApplication.class, args);}}

2.3 添加feign接口

@FeignClient("spring-cloud-eureka-product")
public interface ProductClient {@RequestMapping("/loadTest")public String loadTest();
}

2.4 创建控制器

创建Controller

@RestController
public class FeignClientController {@Autowiredprivate ProductClient productClient;@RequestMapping("/loadTest")public String loadTest(){return productClient.loadTest();}}

2.5 启动所有服务

启动成功,结果如图2-1所示。

图2-1 启动成功的结果 

2.6 访问

两次访问http://localhost:9005/loadTest,结果如下,结果也说明了feign自带负载均衡功能。

图2-2 访问结果

三、总结

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

相关文章:

  • 六、深度学习——NLP
  • 01_类的概念和定义
  • websocket连接时发生未知错误
  • sqli-labs靶场通关笔记:第9关 时间盲注
  • 快速生成 Android 的 Splash 的 9 Patch 图片
  • 【零基础入门unity游戏开发——unity3D篇】3D光源之——unity反射和反射探针技术
  • AI进化论12:大语言模型的爆发——GPT系列“出圈”,AI飞入寻常百姓家
  • Kafka——Kafka 线上集群部署方案怎么做?
  • c语言初阶 结构体
  • 【Python】venv:配置独立镜像源
  • 常用的docker命令备份
  • 007_用例与应用场景
  • python 列表(List) vs. 元组(Tuple):什么时候该用不可变的元组?它们在性能和用途上有什么区别?
  • 暑期自学嵌入式——Day01(C语言阶段)
  • 协程的基本使用
  • 【保姆级图文详解】MCP架构(客户端-服务端)、三种方式使用MCP服务、Spring AI MCP客户端和服务端开发、MCP部署方案、MCP安全性
  • 基于 CentOS 7 的 LVS+DR+Web+NFS 旅游攻略分享平台部署
  • CentOS系统下前后端项目部署攻略
  • 从 Manifest V2 升级到 Manifest V3:常见问题与解决方案
  • vue-component
  • [Linux入门 ] RAID存储技术概述
  • (S4)Efficiently Modeling Long Sequences with Structured State Spaces论文精读(逐段解析)
  • [Rust 基础课程]Hello World
  • 数据结构 单链表(2)--单链表的实现
  • 聊一聊Java生态接口测试常见的框架
  • 在 Spring Boot 中使用 MyBatis 的 XML 文件编写 SQL 语句详解
  • MySQL SQL语句精要:DDL、DML与DCL的深度探究
  • Design Compiler:什么是代价函数(Cost Function)
  • HarmonyOS组件/模板集成创新活动-元服务小云体重管理引入案例(步骤条UI组件)
  • python赤道上空的大气环流剖面图(纬向-高度剖面)