Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Feign Client without Eureka(openfeign 3)

Feign Client without Eureka(openfeign 3)

作者头像
十毛
发布于 2023-10-16 08:33:14
发布于 2023-10-16 08:33:14
37400
代码可运行
举报
运行总次数:0
代码可运行

最近项目中用到了很多的远程调用,但是还不准备上微服务,但是feign client提供的对远程调用的封装还是很好用的,所以决定引用。 参考之前写的文章Feign Client without Eureka,发现升级到openfeign 3.1.7后并不能兼容,一直收到异常feign.FeignException$ServiceUnavailable: [503] during [POST] to [XXX]: [Load balancer does not contain an instance for the service XXX]。本文介绍了升级openfeign 3之后的使用方法。

添加依赖: pom.xml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>2.7.12</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
        <version>3.1.7</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-loadbalancer</artifactId>
        <version>3.1.6</version>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

定义Feign接口

  • HomeApi
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;

@FeignClient(name = "home", path = "/home")
public interface HomeApi {
    @GetMapping("/ping")
    String ping();
}

注意:这里的name = "home"需要与后面配置文件中的home一致

配置文件

  • application.yml
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 配置home的URI
spring:
  cloud:
    discovery:
      client:
        simple:
          instances:
            home:
              -
                uri: http://localhost:8081

上面配置文件中home interface的目标地址是一个数组

接口调用

  • FeignWithoutEurekaApplication
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;

import javax.annotation.Resource;

@EnableFeignClients
@SpringBootApplication
public class FeignWithoutEurekaApplication implements ApplicationRunner {

    @Resource
    private HomeApi homeApi;

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

    @Override
    public void run(ApplicationArguments args) throws Exception {
        System.out.println(homeApi.ping());
    }
}

注意需要添加注解@EnableFeignClients

执行结果

标准输出中输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
success

常见问题

  • feign.FeignException$ServiceUnavailable: [503] during [POST] to [XXX]: [Load balancer does not contain an instance for the service XXX]: 不能使用老的这种配置
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
home:
  ribbon:
    listOfServers: http://localhost:8081

而是该用如下配置方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spring:
  cloud:
    discovery:
      client:
        simple:
          instances:
            home:
              -
                uri: http://localhost:8081

参考

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-05-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一起来学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
6290
SpirngCloud集成OpenFeign
前面在使用Ribbon+RestTemplate时,利用RestTemplate对http请求的封装处理,形成了一套模版化的调用方法。但是在实际开发中,由于对服务依赖的调用可能不止一处,往往一个接口会被多处调用,所以通常都会针对每个微服务自行封装一些客户端类来包装这些依赖服务的调用。所以,Feign在此基础上做了进一步封装,由他来帮助我们定义和实现依赖服务接口的定义。在Feign的实现下,我们只需创建一个接口并使用注解的方式来配置它(以前是Dao接口上面标注Mapper注解,现在是一个微服务接口上面标注一个Feign注解即可),即可完成对服务提供方的接口绑定,简化了使用Spring cloud Ribbon时,自动封装服务调用客户端的开发量。
大忽悠爱学习
2021/12/07
3701
SpirngCloud集成OpenFeign
Feign Client without Eureka
Feign Client相比Rest Template可以自动实现负载均衡,而且接口使用也更加友好,但是一般情况下Feign Client都需要依赖eureka。其实我们也可以在没有eureka的环境下,直接使用Feign Client。既用到了Feign Client的好处,又为将来切换到Spring Cloud做好预备. 添加依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring
十毛
2019/07/22
1.1K0
SpringCloud服务接口调用OpenFegin
cheese
2023/10/25
2190
SpringCloud服务接口调用OpenFegin
SpringCloud入门(五)-服务消费者(Feign)
Feign 是一个声明式的伪 Http 客户端,它使得写 Http 客户端变得更简单。使用 Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,Feign 支持可插拔的编码器和解码器。Feign 默认集成了 Ribbon,并和 Eureka 结合,默认实现了负载均衡的效果(所以说服务消费者一般使用Feign)
故里
2020/11/25
1.4K0
Feign源码解析:初始化过程(二)
上一篇介绍了Feign源码初始化的一部分,内容主要是,@EnableFeignClients、@FeignClient这些注解,都支持设置一些自定义的配置类:
低级知识传播者
2023/12/26
3540
Feign源码解析:初始化过程(二)
使用Feign简化Spring Boot微服务间的调用
摘要: 在微服务架构中,服务间的通信是至关重要的。Spring Cloud提供了多种工具,其中Feign是一款声明式的Web服务客户端,能够显著简化服务调用的过程。本文将详细介绍在Spring Boot应用中如何使用Feign进行微服务之间的调用。
用户10862336
2023/11/30
6470
openfeign远程调用
可以看到我们调用ruben-provider的接口,实际返回了ruben-consumer接口的结果
阿超
2022/08/16
4660
Spring Cloud 2.x学习笔记:2、feign改进(Greenwich版本)
版权声明:本文为博主原创文章,欢迎转载。 https://blog.csdn.net/chengyuqiang/article/details/90712031
程裕强
2019/07/02
8480
Spring Cloud 2.x学习笔记:2、feign改进(Greenwich版本)
Spring Cloud 入门教程3、服务消费者(Feign)
Feign是基于Ribbon封装的HTTP Client工具包,Feign的目标是简化HTTP Client。Feign也确实做到了这一点,使用Feign发起HTTP请求只需要定义好接口并且配置好相应的注解即可完成对对应接口的绑定。
wuweixiang
2019/03/12
5820
Spring Cloud 入门教程3、服务消费者(Feign)
微服务精通之Feign原理解析
经过微服务精通之Ribbon原理解析的学习,我们了解到了服务消费者获取服务提供者实例的过程,都是通过RestTemplate来实现的,而且,都是模板化操作。那spring cloud是否有哪个组件可以通过注解或者配置的方式,来简化这个过程?答案是有的,就是Feign。
全栈程序员站长
2022/11/09
1.1K0
微服务精通之Feign原理解析
SpringCloud详细教程 | 第三篇: 声明性REST客户端Feign(Greenwich版本)
Spring Cloud有两种服务调用方式,一种是Ribbon+RestTemplate,另一种是Feign,上一篇文章,讲述了如何通过Ribbon+RestTemplate去调用服务,这篇文章主要讲述如何通过Feign去调用服务
小东啊
2019/06/26
9550
SpringCloud详细教程 | 第三篇: 声明性REST客户端Feign(Greenwich版本)
集成Ribbon的客户端调用工具——Feign
什么是Feign? 客户端调用工具 Ribbon+RestTemplate Feign Feign特性: Feign本身包含Ribbon Fegin是一个采用基于接口的注解的声明式客户端调用工具,更加
Noneplus
2019/09/24
4790
集成Ribbon的客户端调用工具——Feign
微服务(七)——OpenFeign服务调用
官方文档:https://cloud.spring.io/spring-cloud-static/Hoxton.SR1/reference/htmlsingle/#spring-cloud-openfeign
不愿意做鱼的小鲸鱼
2022/09/26
4110
微服务(七)——OpenFeign服务调用
06OpenFeign服务接口调用
http://localhost/consumer/payment/get/130
Remember_Ray
2020/10/29
3630
06OpenFeign服务接口调用
SpringCloud 使用 Feign各 种报错
由于只想在SpringBoot中使用一下Feign客户端,来访问第三方请求,但因为各种版本问题,一直报各种乱七八糟的错
FHAdmin
2022/02/25
7980
OpenFeign使用步骤
 @FeignClient(value = "CLOUD-PAYMENT-SERVICE") 括号里面的值就是8001 8002 的服务程序名称
一个风轻云淡
2022/11/13
4750
OpenFeign使用步骤
微服务声明式rest客户端之feign使用入门教程
在本教程中,我们将介绍Feign。我们还将谈谈Spring Boot和Feign。 在本教程中,我们将了解如何使用Feign编写声明性REST客户端。它通过抽象出我们通常编写的样板代码,使编写Web客户端变得容易。我们需要做的就是声明一个接口并注释它及其方法。实际的实现将由框架在运行时完成,以及调用之间的各种消息转换。我们首先需要设置一个使用已知端点运行的示例REST API,以便我们可以使用feign客户端调用它们。
lyb-geek
2022/03/10
1.9K0
最适合新手入门的SpringCloud教程 7—OpenFeign「F版本」
上一篇使用了RestTemplate的服务调用,但是有一些问题:通过RestTemplate发送请求时候,携带参数比较的繁琐,另外RestTemplate中需要写完整的Url,这一步也是比较麻烦的。
鹿老师的Java笔记
2020/04/14
5620
SpringCloud:Feign实现微服务之间相互请求
上篇文章说了通过RestTemplate实现微服务之间访问:https://blog.csdn.net/Ber_Bai/article/details/125460941,这篇文章将通过Feign实现微服务之间访问。
鳄鱼儿
2022/06/30
3590
相关推荐
一起来学Spring Cloud(F版) | 第三篇:注解式HTTP请求Feign
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验