解决Springboot中Feignclient调用时版本问题
目录
- 大的背景就是
- 错误如下
- 这是Springboot版本不一致导致的问题
- 解决办法如下
现有Springboot项目三个,分别为jpmc-adapter, gsdic-api, twpre-api。gsdic-api, twpre-api是公共的服务,对外提供Restful的API,通过feign client去调用。
大的背景就是
jpmc-adapter现在需要调用另外两个公共的服务。
Springboot版本:
- jpmc-adapter 1.5.9
- gsdic-api 1.5.9
- twpre-api 2.0.5
可以看到jpmc-adaper和gsdic-api的Springboot版本是一致的。如果jpmc-adaper通过feign client单单调用 gsdic-api,一切都OK!
现在的情况是:jpmc-adaper既需要调用 gsdic-api,又需要调用twpre-api,然后启动项目的时候就报错了
错误如下
这是Springboot版本不一致导致的问题
先看jpmc-adaper中是如何去调用另外两个服务的。
大致如下:
1. build.gradle中引入另外两个公共服务的jar包。
2. gradle.properties中统一管理依赖版本号,如下:
3. 启动类中引入公共服务的配置:
4. 测试类中调用如下:
其中,twpre-api的FeignClient是来自org.springframework.cloud.openfeign.FeignClient;如下:
而gsdic-api的FeignClient是来自org.springframework.cloud.netflix.feign.FeignClient, 如下:
解决办法如下
你可以把所以服务的版本换成一致,这样就能避免此类问题。但是换版本可能会导致很多问题,这里可以通过如下方式解决:
因为jpmc-adapter和gsdic-api的版本是一致的,那么我们在调用方即jpmc-adapter中重写twpre-api的FeignClient。
package com.geoswift.jpmc.api; import org.springframework.cloud.netflix.feign.FeignClient; import com.geoswift.twpre.fapi.TwpreRestAPI; @FeignClient(name="twpre", path="/api/twpre/v1") public interface MyTwpreRestAPI extends TwpreRestAPI { }
然后在测试的时候使用我们重写后的客户端就行了,如下:
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
基于springboot服务间Feign调用超时的解决方案
解决springboot服务间Feign调用超时问题概述 1.起因 在完成项目功能需求的开发,经过自己测试以及通过测试组测试通过后,昨晚正式部署到线上环境进行正式运行前的最后一次的测试.但是在测试中,由A服务调用B服务接口时,***通过Feign调用(其实就是http请求,当A服务调用B服务时,如果不配置超时时间,那么A发出请求后,B应该立即响应,否则A服务会认为B已经断开连接)出现***连接超时的错误,错误信息:Read timed out- 2.原因 用idea开发debug模式调试代码时,
-
SpringBoot如何使用feign实现远程接口调用和错误熔断
这篇文章主要介绍了SpringBoot如何使用feign实现远程接口调用和错误熔断,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.第一步,新建两个简单的springboot项目并创建rest接口 demo系统的rest接口 plus系统的调用接口 2.在项目pom文件里导入feign和hystrix的pom依赖包 <properties> <java.version>1.8</java.version> <s
-
Spring Cloud-Feign服务调用的问题及处理方法
概述: • Feign 是一个声明式的 REST 客户端,它用了基于接口的注解方式,很方便实现客户端配置. • Feign 最初由 Netflix 公司提供,但不支持SpringMVC注解,后由 SpringCloud 对其封装,支持了SpringMVC注 解,让使用者更易于接受 首先在调用者的pom中加入如下坐标 <!--feign--> <dependency> <groupId>org.springframework.cloud</groupId> &
-
springboot2.x引入feign踩的坑及解决
目录 springboot2.x引入feign踩的坑 一.需求 二.什么是feign 三.springboot1.x中feign的使用 四.springboot2.x中feign的使用 feign调用方式比较 一.事发原因 二.方式1介绍 三.方式2介绍 四.调用结果测试 五.两种方式对比 六.小结一下 springboot2.x引入feign踩的坑 一.需求 最近公司项目需求,需要调用第三方服务的接口,所以选用了feign来实现(这里只说springboot2.x的pom引用,没有怎么使用,网
-
解决Springboot中Feignclient调用时版本问题
目录 大的背景就是 错误如下 这是Springboot版本不一致导致的问题 解决办法如下 现有Springboot项目三个,分别为jpmc-adapter, gsdic-api, twpre-api.gsdic-api, twpre-api是公共的服务,对外提供Restful的API,通过feign client去调用. 大的背景就是 jpmc-adapter现在需要调用另外两个公共的服务. Springboot版本: jpmc-adapter 1.5.9 gsdic-api
-
解决feignClient调用时获取返回对象类型匹配的问题
feignClient调用时获取返回对象类型匹配 feignClient是springCloud体系中重要的一个组件,用于微服务之间的相互调用,底层为httpClient,在之前的应用中,我一直以为A服务提供的方法返回类型为对象的话,那么调用A服务的B服务必须也用字段类型以及命名完全相同的对象来接收,为此我验证了一下,发现不是必须用完全相同的对象来接收,比如,可以用map<String,Object>或者Object来接收,然后解析. 当然,复杂对象我还是推荐用一个完全相同的对象来接收. 下面
-
解决SpringBoot多模块发布时99%的问题
解决SpringBoot多模块发布时99%的问题?SpringBoot发布的8个原则和4个问题的解决方案 如果使用 SpringBoot 多模块发布到外部 Tomcat,可能会遇到各种各样的问题.本文归纳了以下 8 个原则和发布时经常出现的 4 个问题的解决方案,掌握了这些原则和解决方案,几乎可以解决绝大数 SpringBoot 发布问题. SpringBoot 多模块发布的 8 大原则 1 在发布模块打包,而不是父模块上打包 比如,以下项目目录: 如果要发布 api 就直接在它的模块上打包,而
-
解决SpringBoot中使用@Async注解失效的问题
错误示例,同一个类中使用异步方法: package com.xqnode.learning.controller; import com.fasterxml.jackson.core.JsonProcessingException; import org.springframework.scheduling.annotation.Async; import org.springframework.web.bind.annotation.GetMapping; import org.springf
-
解决python中使用PYQT时中文乱码问题
如题,解决Python中用PyQt时中文乱码问题的解决方法: 在中文字符串前面加上u,如u'你好,世界',其他网上的方法没有多去探究,Python的版本也会影响解决方法,故这里只推荐这种. (有人说用toLocal8bit函数也可以,我试了下,貌似不行)请看例子: #coding=utf-8 from PyQt4 import QtGui, QtCore s = QtCore.QString(u'你好(hello)世界(world)') t = s.toLocal8Bit() u = unico
-
解决idea中svn提交时performing vcs refresh时间很长的问题
出现场景:idea软件重装了一次,项目空间是沿用原来的,所有的项目配置也是之前的,导致svn提交异常缓慢. 1.解决方案:重新建立工作区间project 将svnd的项目导出来,并且配置好项目运行环境 再次提交代码到svn就不卡了 2.将设置的值设为300 3.设置一下这里 重启idea,再次提交到svn 亲测有效!!!! 补充知识:idea使用svn(日常使用) 本文记录了svn的日常使用!!!非常详细!!!持续更新- 更新svn的项目到本地(一般是先更新再进行提交) 选择你的svn(服务器)
-
解决springboot中配置过滤器以及可能出现的问题
在springboot添加过滤器有两种方式: 1.通过创建FilterRegistrationBean的方式(建议使用此种方式,统一管理,且通过注解的方式若不是本地调试,如果在filter中需要增加cookie可能会存在写不进前端情况) 2.通过注解@WebFilter的方式 通过创建FilterRegistrationBean的方式创建多个filter以及设置执行顺序: 1.创建两个实现Filter接口的类TestFilter1 .TestFilter2 package com.aoxun.c
-
解决SpringBoot中@Email报错问题
JSR303校验相关 现象:在springboot中使用@Email注解进行数据校验时,报没有该注解的错误. 解决方法: 在pom.xml中加该配置 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> 测试成功 ==测试成功== ![i
-
解决MyEclipse中Maven设置jdk版本jdk1.8报错问题
今天安装了jdk1.8.tomcat8.和maven3.5.2,弄好后在myeclipse新建了一个maven项目,项目默认是jdk1.5,如图一,我把它改成jdk1.8,项目就报错了,如图二,然后update project后又变成jdk1.5了. 图一: 图二: 解决方法: 打开maven项目的pom.xml文件, 在build节点下加入下面这段代码 ,然后在选中项目右键-->maven4myeclipse-->update project...就能更新为jdk1.8了.如图三,现在项目已
-
解决pyCharm中 module 调用失败的问题
检测自己当前系统环境中python是否已经安装该module,若未安装请自行安装 检测自己的pycharm使用的环境变量是否与当前环境一致 若不一致,则在File中选择Default Settings 点击Show All 删除掉当前目录使用的环境,然后只保留选择系统环境,点击ok即可 以上这篇解决pyCharm中 module 调用失败的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.
随机推荐
- Perl中使用MIME::Lite发送邮件实例
- Vue.js中组件中的slot实例详解
- struts2集成javamail发邮件示例详解
- bootstrap响应式表格实例详解
- javascript如何定义对象数组
- 纯php打造的tab选项卡效果代码(不用js)
- 使用go语言解析xml的实现方法(必看篇)
- node.js中的定时器nextTick()和setImmediate()区别分析
- Python中的ConfigParser模块使用详解
- asp程序错误详细说明例表
- C#获取网页HTML源码实例
- php操作access数据库的方法详解
- mysql中索引与FROM_UNIXTIME的问题
- javascript 使用正则test( )第一次是 true,第二次是false
- jQuery中bind,live,delegate与one方法的用法及区别解析
- 自主创业:网上挣钱的中国站长们看过来
- VS2010写的程序在自己电脑可以运行、其他电脑上不能运行的解决方案
- Java别说取余(%)运算简单你真的会吗
- Android自定义ViewPager实现纵向滑动翻页效果
- [jQuery] 事件和动画详解