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

Java feign方式对同一个服务编写多个远程调用实例报错及3种解决办法

这篇博客将介绍Java feign方式对同一个服务进行多个远程调用实例遇到的报错及3种解决办法
当单独仅有一个调用实例时ok,俩个调用实例时一段时间报错,一段时间好。间歇性的,之后就彻底调不通了。
服务ServiceA有interface1,interface2,interface3
服务ServiceB对interface1,interface2的方法进行进行调用。

会报错超时connection timeout,或者拒绝连接connection refused。

解决办法有3种如下:

方法1

错误方法如下:

// 会报错Only Single Inheritance
@FeignClient("service-A")
public interface RefactorServiceA extends InterfaceService1,InterfaceService2 {


}

解决方法就是把所有用到的接口**完整的(全路径,方法名及参数都必须跟服务A中定义的一致)**写到服务B中;

@FeignClient("service-A")
public interface RefactorServiceA {

    @GetMapping({"/refactor/a/queryTile"}) // 全路径
    Response<String> getTileFromInterface1(@RequestParam("x") long var1, @RequestParam("y") long var3, @RequestParam("z") int var5);

    @GetMapping({"/refactor/a/c/queryInterface2"}) // 全路径
    Response<String> getUserFromInterface2(@RequestParam("userId") String userId);
}

方法2

@FeignClient("service-A")
public interface RefactorServiceA extends InterfaceService1 {


}

@FeignClient("service-A",contextId="interfaceService2")
public interface RefactorServiceA2 extends InterfaceService2 {

}

解决方法就是消费者服务B下的application.yml或者bootstrap.yml中添加配置:允许相同的bean定义合并;

spring:
  main:
    allow-bean-definition-overriding: true

方法3,同方法2不加contextId

@FeignClient("service-A")
public interface RefactorServiceA extends InterfaceService1 {


}

@FeignClient("service-A")
public interface RefactorServiceA2 extends InterfaceService2 {

}

不加contextId也可以;
解决方法就是消费者服务B下的application.yml或者bootstrap.yml中添加配置:允许相同的bean定义合并;

spring:
  main:
    allow-bean-definition-overriding: true

参考

  • https://blog.csdn.net/weixin_62321552/article/details/125530866
  • https://www.cnblogs.com/charon-m/p/16055157.html

相关文章:

  • kubernetes API Server 没有 bind 0.0.0.0
  • 猿创征文|深度剖析复杂的菱形继承与菱形虚拟继承
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • 想进大厂?这份面试真题你刷了吗?
  • CentOS 7最小化安装没有ifconfig
  • 小功能⭐️Unity快捷键、路径及常用特性
  • 备份和恢复Gitlab数据
  • Kali在线安装包一些小问题
  • vue中常用的修饰符
  • 骨架图算法
  • Git --》如何在IDEA中玩转Git与GitHub?
  • C++中的继承(继承基本概念、菱形虚拟继承内存模型)
  • 怎样从零开始训练一个AI车手?
  • 【Spring Cloud】新闻头条微服务项目:文章内容安全审核(新增DFA+OCR过滤敏感词需求)
  • 猿创征文|给妈妈做个相册——在服务器上搭建Lychee相册的保姆级教程
  • 自己简单写的 事件订阅机制
  • 【面试系列】之二:关于js原型
  • JavaScript新鲜事·第5期
  • nfs客户端进程变D,延伸linux的lock
  • Promise面试题2实现异步串行执行
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • vue 配置sass、scss全局变量
  • webgl (原生)基础入门指南【一】
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 聊一聊前端的监控
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 使用权重正则化较少模型过拟合
  • 译自由幺半群
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (差分)胡桃爱原石
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (转)Windows2003安全设置/维护
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • ..回顾17,展望18
  • .NetCore 如何动态路由
  • .Net中的设计模式——Factory Method模式
  • /dev/sda2 is mounted; will not make a filesystem here!
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • @RequestBody的使用
  • @Responsebody与@RequestBody
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?
  • [ NOI 2001 ] 食物链
  • [Android]使用Android打包Unity工程
  • [BJDCTF2020]The mystery of ip1
  • [C#]DataTable常用操作总结【转】
  • [C++]类和对象【上篇】
  • [FZSZOJ 1223] 上海红茶馆
  • [LeeCode]-Divide Two Integers 不用乘除的除法运算
  • [LeetCode] 626. 换座位
  • [LeetCode] Copy List with Random Pointer 拷贝带有随机指针的链表
  • [MAT]使用MAT比較多个heap dump文件
  • [node] Node.js的文件系统
  • [python] 基于diagrams库绘制系统架构图