feignclient服务间调用,feignclient调用外部接口
目录
FeignClient调用远程服务时整合本地尝试将本地方法加入假装接口尝试通过实现两个接口IS-HASFeignClient服务之间调用服务英语字母表中第一个字母需调用服务仓库的试验方法英语字母表中第一个字母的应用配置加
FeignClient调用远程服务时整合本地
包装一个用户服务,一部分功能需要调用远程服务,而另一部分功能调用本地方法,如:
@ FeignClient(value= USER-SERVICE )公共接口远程用户服务{ @ get映射( getuserbysuserid )公共用户getuserbysuserid(字符串userId);}公共接口local user service { public String get userid();} @服务公众类LocalUserServiceImpl实现本地用户服务{ @自动有线专用http servlet请求请求;公共字符串get userid(){ return(String)请求。getsession().get属性(" user-id ");}}为了简化篇幅,并没有处理异常。
当使用者使用这两个用户相关的服务,就需要自动装载两个服务:
@ Autowiredprivate local userservice local userservice;@ Autowiredprivate remote user service remote user service;能不能简化一下呢?将两个服务整合。
尝试将本地方法加入Feign接口
@ feign client(value= USER-SERVICE ,fallback=userservicehystrix。类)公共接口UserService { @ get mapping( getUserByUserId )公共用户getUserByUserId(字符串userId);公共字符串获取userid();} @服务公众类用户服务热线实现UserService { @ auto wired private http servlet请求请求;公共用户getUserByUserId(String userId){返回null}公共字符串get userid(){ return(String)请求。getsession().get属性(" user-id ");} }Fail:
测试发现,用户服务接口中定义本地方法getUserId()编译器直接报错了,要求必须有绘图注解。
尝试通过实现两个接口
换一个思路,回到最初,在熔断器中实现两个接口:
@ FeignClient(value= USER-SERVICE ,fallback=userservicehystrix。类)公共接口UserService { @ get mapping( getUserByUserId )公共用户getUserByUserId(字符串userId);}公共接口本地用户服务扩展远程用户服务{ public String get userid();} @服务公众类用户服务热线实现LocalUserService,remote user service { @ auto wired private http servlet request;公共用户getUserByUserId(String userId){返回null}公共字符串get userid(){ return(String)请求。getsession().get属性(" user-id ");} }Fail:
测试发现,本地方法正常,远程方法根本无效,好像就是一个本地方法,直接走到了熔断方法中。
IS - HAS
让远程用户服务是本地用户服务既然不行,那么就试试让本地用户服务有RemoteUserService。
@ FeignClient(value= USER-SERVICE ,fallback=userservicehystrix。类)公共接口UserService { @ get mapping( getUserByUserId )公共用户getUserByUserId(字符串userId);}公共接口本地用户服务扩展远程用户服务{ public String get userid();} @服务公众类对象实现LocalUserService,remote user service { @ auto wired private http servlet request;@ Autowire private remote user service remote user service;公共用户getUserByUserId(String userId){ return remote userservice。getUserByUserId(用户标识);} public String get userid(){ return(String)请求。getsession().get属性(" user-id ");} }SUCCESS:
这样是可以的。编码时稍微麻烦了一点,使用时就清晰多了。
FeignClient服务之间调用
服务A需调用服务B的test方法
B服务不动
答:
最好新建一个计算机网络服务器
@ Component @ FeignClient(value= tools )公共接口ServiceAFeignClient { @ request mapping(value=/hi )String test();}工具为服务仓库配置中的你好为仓库中控制器的接口
然后英语字母表中第一个字母中代码调用新建的计算机网络服务器的接口即可,可能会出错
com。网飞。客户。客户端异常:负载平衡器没有可供客户端使用的服务器
A的application配置加
丝带:尤里卡:启用:真以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行它.
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。