Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Spring Cloud Alibaba 使用 feign 和 rebion 进行服务消费

Spring Cloud Alibaba 使用 feign 和 rebion 进行服务消费

作者头像
用户10384376
发布于 2023-02-25 12:46:19
发布于 2023-02-25 12:46:19
37000
代码可运行
举报
文章被收录于专栏:码出code码出code
运行总次数:0
代码可运行

微服务的服务消费,一般是使用 feign 和 rebion 调用服务提供,进行服务的消费,本文将实战使用代码讲解服务的消费。

微服务环境的搭建

创建一个 springboot 项目,springboot 是将服务进行拆分的一个最小服务单位。

添加 maven 依赖

  • 基本的maven依赖
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

rebion 依赖

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
          <dependency>
              <groupId>org.springframework.cloud</groupId>
              <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
          </dependency>

feign 依赖

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
         <dependency>
              <groupId>org.springframework.cloud</groupId>
              <artifactId>spring-cloud-starter-openfeign</artifactId>
          </dependency>

feign依赖包含rebion依赖,如果想同时使用 feign 和 rebion 依赖,只需要引用feign 即可。

添加application.yml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

添加Appcation.java启动类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@SpringBootApplication
//将服务注册到注册中心
@EnableDiscoveryClient
//扫描和注册feign客户端bean定义
@EnableFeignClients
public class NacosConsumeApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosConsumeApplication.class, args);
    }

}

其中 @EnableDiscoveryClient 将服务注册到注册中心,@EnableFeignClients 扫描和注册feign客户端bean定义。fegin bean定义是 @FeignClient。

服务调用 : feign 和 ribbon

1. feign

  • 创建feign客户端
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@FeignClient(value = "service-provider")
public interface ProductClient {

    @GetMapping("/hello")
    String product(@RequestParam("name") String name);
}

这里 @FeignClient 就是创建bean 给 @EnableFeignClients 扫描的注册。@FeignClient 里面的配置 value 对应的是服务提供者的服务名称,@GetMapping里面的value对应服务提供者的 @GetMapping 路径。

这样做的好处是这里直接配置好路径和服务名称,不需要调用方做任何的配置。

  • 创建请求调用 feign客户端
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@RestController
public class FeignController {


    //这个错误是编译器问题。因为这个Bean是在程序启动的时候注入的,编译器感知不到,所以报错。
    @Autowired
    private ProductClient productClient;

    @GetMapping("/feign")
    public String feign(String name){
        return productClient.product(name);
    }

}

2. rebion

配置 RestTemplate bean

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Configuration
public class RibbonConfig {

  @LoadBalanced
  @Bean
  public RestTemplate restTemplate(){
      return new RestTemplate();
  }
}

调用服务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@RestController
public class RibbonController {

  @Autowired
  private RestTemplate restTemplate;

  @GetMapping("/ribbon")
  public String ribbon(String name){
      String result = restTemplate.getForObject("http://service-provider/hello?name="+name,String.class);
      return result;
  }
}

feign 和 rebion 优缺点

  • feign 配置比较简单明了,配置好了 FeignClient,直接调用即可,不过后续有多余的配置。
  • rebion每次都需要配置请求路径,它的优点在于直接调用即可,不要单独配置客户端。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码出code 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Spring Cloud 微服务实战——nacos 服务注册中心搭建(附源码)
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
用户10384376
2023/02/25
6130
Spring Cloud 微服务实战——nacos 服务注册中心搭建(附源码)
Spring Cloud Alibaba之服务容错组件 - Sentinel对Feign的支持(十七)
Spring Cloud Alibaba Sentinel 除了对 RestTemplate 做了支持,同样对于 Feign 也做了支持,如果我们要从 Hystrix 切换到 Sentinel 是非常方便的,下面介绍下如何使用 Feign 支持以及实现原理。
用户1212940
2022/04/13
6850
一起来学Spring Cloud(F版) | 第三篇:注解式HTTP请求Feign
注解式的 Feign 使得 Java HTTP 客户端编写更方便。Feign 灵感来源于安卓网络编程框架 Retrofit、JAXRS-2.0 和 WebSocket,支持可插拔编码器和解码器,降低 HTTP API 的复杂度,通过最少的资源和代码来实现和 HTTP API 的连接。通过可定制的解码器和错误处理,可以编写任意的HTTP API。Spring Cloud Feign封装了 Ribbon 这一组件,所以在使用 Feign 同时还能提供负载均衡的功能,这一切只需要一个 @FeignClient即可完成。
battcn
2018/10/18
6410
【Spring Cloud Alibaba】(二)微服务调用组件Feign原理+实战
通过上文,我们掌握了Spring Cloud Alibaba微服务框架的初始环境搭建,并能通过Nacos注册中心的服务注册和发现,配合RestTemplate和Ribbon,实现2个服务之间通过服务名进行远程调用。 实际上,微服务之间的调用还有更简单、更方便、更强大的调用方式,那就是RPC调用!本文所讲的微服务调用组件Feign,正是RPC框架之一! 本文会循序渐进的从Feign讲到OpenFeign,并会讲到Feign核心原理和实际项目使用OpenFeign的通常做法:
天罡gg
2023/03/01
3.1K0
【Spring Cloud Alibaba】(二)微服务调用组件Feign原理+实战
【Spring底层原理高级进阶】微服务 Spring Cloud 的注册发现机制:Eureka 的架构设计、服务注册与发现的实现原理,深入掌握 Ribbon 和 Feign 的用法 ️
Eureka是Spring Cloud中的一个服务注册和发现组件,它采用了客户端-服务器的架构设计。
苏泽
2024/03/01
6620
Spring Cloud构建微服务架构:服务消费者
通过上一篇《Spring Cloud构建微服务架构:服务注册与发现》,我们已经成功地将服务提供者:compute-service服务注册到Eureka服务注册中心或Consul服务端上了,那么我们要如何去消费服务提供者的接口呢? Spring Cloud Ribbon Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。它是一个基于HTTP和TCP的客户端负载均衡器。它可以通过在客户端中配置ribbonServerList来设置服务端列表去轮询访问以达到均
程序猿DD
2018/02/01
8430
Spring Cloud框架(原生Hoxton版本与Spring Cloud Alibaba)初级篇 ---- 服务调用
官方文档:https://docs.spring.io/spring-framework/docs/5.2.2.RELEASE/javadoc-api/org/springframework/web/client/RestTemplate.html
百思不得小赵
2022/12/01
3150
Spring Cloud框架(原生Hoxton版本与Spring Cloud Alibaba)初级篇 ---- 服务调用
Spring Cloud【Finchley】-06服务消费者整合Feign
回想下我们在使用Eureka 和 Ribbon的时候是怎么调用注册在Eureka Server上的微服务的地址呢?
小小工匠
2021/08/17
3310
玩转SpringCloud(F版本) 二.服务消费者(2)feign
上一篇博客讲解了服务消费者的ribbon+restTemplate 模式的搭建,此篇文章将要讲解服务消费者feign模式的搭建,这里是为了普及知识 平时的项目中两种消费模式选择其一即可
房上的猫
2019/01/24
5650
玩转SpringCloud(F版本)   二.服务消费者(2)feign
Spring Cloud 2.x系列之服务发现&服务消费者Feign
spring cloud的Netflix中提供了两个组件实现软负载均衡调用,分别是Ribbon和Feign。上一篇和大家一起学习了Ribbon。
BUG弄潮儿
2022/06/30
2220
Spring Cloud 2.x系列之服务发现&服务消费者Feign
Spring cloud多模块开发下Feign的使用,以及@FeignClient注入bean找不到异常解决「建议收藏」
在微服务架构开发是,我们常常会在一个项目中调用其他服务,其实使用Spring Cloud Ribbon就能实现这个需求,利用RestTemplate 的请求拦截来实现对依赖服务的接口调用, 但是实际项目中对服务依赖的调用可能不止于 一 处,往往 一 个接口会被多处调用,所以我们通常都会针对各个微服务自行封装 一 些客户端类来包装这些依赖服务的调用。 这个时候我们会发现,由于 RestTemplate 的封装,几乎每 一 个调用都是简单的模板化内容。
全栈程序员站长
2022/08/23
3K0
Spring cloud多模块开发下Feign的使用,以及@FeignClient注入bean找不到异常解决「建议收藏」
Spring Boot + Spring Cloud 构建微服务系统(三):服务消费和负载(Feign)
Spring Cloud Feign是一套基于Netflix Feign实现的声明式服务调用客户端。它使得编写Web服务客户端变得更加简单。我们只需要通过创建接口并用注解来配置它既可完成对Web服务接口的绑定。它具备可插拔的注解支持,包括Feign注解、JAX-RS注解。它也支持可插拔的编码器和解码器。Spring Cloud Feign还扩展了对Spring MVC注解的支持,同时还整合了Ribbon来提供均衡负载的HTTP客户端实现。
朝雨忆轻尘
2019/06/19
3780
Spring Boot + Spring Cloud 构建微服务系统(三):服务消费和负载(Feign)
业余草 SpringCloud教程 | 第三篇: 服务消费者(Feign)(Finchley版本)
上一篇文章,讲述了如何通过RestTemplate+Ribbon去消费服务,这篇文章主要讲述如何通过Feign去消费服务。
业余草
2019/01/21
4260
史上最简单的SpringCloud教程 | 第三篇: 服务消费者(Feign)(Finchley版本)
个人博客纯净版:https://www.fangzhipeng.com/springcloud/2018/08/03/sc-f3-feign.html
方志朋
2022/05/08
2430
Spring Cloud(四)服务提供者 Eureka + 服务消费者 Feign
上一篇文章,讲述了如何通过RestTemplate + Ribbon去消费服务,这篇文章主要讲述如何通过Feign去消费服务。 Feign简介 Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。 使用Feign,只需要创建一个接口并注解,它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解,Feign支持可插拔的编码器和解码器,Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。 Feign 具有如下特性: 可插拔的注解支持,包括Feign
程序员鹏磊
2018/02/09
1K0
Spring Cloud(四)服务提供者 Eureka + 服务消费者 Feign
【微服务~远程调用】整合RestTemplate、WebClient、Feign
🔎这里是【微服务~远程调用】,关注我学习微服务不迷路 👍如果对你有帮助,给博主一个免费的点赞以示鼓励 欢迎各位🔎点赞👍评论收藏⭐️ 👀专栏介绍 【微服务~远程调用】 目前主要更新微服务,一起学习一起进步。 👀本期介绍 本期主要介绍远程调用整合整合RestTemplate、WebClient、Feign 文章目录 整合RestTemplate 整合WebClient WebClient和RestTemplate 响应式IO模型 WebClient入门 API详解 整合Feign 概述 整合Feign
陶然同学
2023/02/27
1.1K0
【微服务~远程调用】整合RestTemplate、WebClient、Feign
SpringCloud详细教程 | 第三篇: 声明性REST客户端Feign(Greenwich版本)
Spring Cloud有两种服务调用方式,一种是Ribbon+RestTemplate,另一种是Feign,上一篇文章,讲述了如何通过Ribbon+RestTemplate去调用服务,这篇文章主要讲述如何通过Feign去调用服务
小东啊
2019/06/26
9720
SpringCloud详细教程 | 第三篇: 声明性REST客户端Feign(Greenwich版本)
java高级进阶|SpringCloud之服务调用组件Feign
Feign是一个声明式WebService客户端,使用Feign能让编写WebService客户端更加简单,它的使用方式是定义一个接口,然后在上面添加 注解,同时也支持JAX-RS标准的注解,Feign也支持可插拔式的编码器和解码器,Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters,Feign可以与Eureka和Ribbon组合使用以支持负载均衡。只需要你创建一个接口,然后在上面添加注解即可。
码农王同学
2020/07/14
5550
java高级进阶|SpringCloud之服务调用组件Feign
SpringCloud:Feign实现微服务之间相互请求
上篇文章说了通过RestTemplate实现微服务之间访问:https://blog.csdn.net/Ber_Bai/article/details/125460941,这篇文章将通过Feign实现微服务之间访问。
鳄鱼儿
2022/06/30
3870
Spring Cloud Feign使用详解
Feign是一个声明式的Web Service客户端,它的目的就是让Web Service调用更加简单。Feign提供了HTTP请求的模板,通过编写简单的接口和插入注解,就可以定义好HTTP请求的参数、格式、地址等信息。
一觉睡到小时候
2019/11/28
2.1K0
推荐阅读
Spring Cloud 微服务实战——nacos 服务注册中心搭建(附源码)
6130
Spring Cloud Alibaba之服务容错组件 - Sentinel对Feign的支持(十七)
6850
一起来学Spring Cloud(F版) | 第三篇:注解式HTTP请求Feign
6410
【Spring Cloud Alibaba】(二)微服务调用组件Feign原理+实战
3.1K0
【Spring底层原理高级进阶】微服务 Spring Cloud 的注册发现机制:Eureka 的架构设计、服务注册与发现的实现原理,深入掌握 Ribbon 和 Feign 的用法 ️
6620
Spring Cloud构建微服务架构:服务消费者
8430
Spring Cloud框架(原生Hoxton版本与Spring Cloud Alibaba)初级篇 ---- 服务调用
3150
Spring Cloud【Finchley】-06服务消费者整合Feign
3310
玩转SpringCloud(F版本) 二.服务消费者(2)feign
5650
Spring Cloud 2.x系列之服务发现&服务消费者Feign
2220
Spring cloud多模块开发下Feign的使用,以及@FeignClient注入bean找不到异常解决「建议收藏」
3K0
Spring Boot + Spring Cloud 构建微服务系统(三):服务消费和负载(Feign)
3780
业余草 SpringCloud教程 | 第三篇: 服务消费者(Feign)(Finchley版本)
4260
史上最简单的SpringCloud教程 | 第三篇: 服务消费者(Feign)(Finchley版本)
2430
Spring Cloud(四)服务提供者 Eureka + 服务消费者 Feign
1K0
【微服务~远程调用】整合RestTemplate、WebClient、Feign
1.1K0
SpringCloud详细教程 | 第三篇: 声明性REST客户端Feign(Greenwich版本)
9720
java高级进阶|SpringCloud之服务调用组件Feign
5550
SpringCloud:Feign实现微服务之间相互请求
3870
Spring Cloud Feign使用详解
2.1K0
相关推荐
Spring Cloud 微服务实战——nacos 服务注册中心搭建(附源码)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验