通過(guò)Feign進(jìn)行調(diào)用@FeignClient?找不到的解決方案
Feign進(jìn)行調(diào)用@FeignClient 找不到
通過(guò)Feign 進(jìn)行調(diào)用
這里配置spring-cloud 版本為 M8的
?<properties> ? ? ? ? <java.version>1.8</java.version> ? ? ? ? <spring-cloud.version>Finchley.M8</spring-cloud.version> ? ? </properties>
引入依賴
?? ??? ?<dependency> ? ? ? ? ? ? <groupId>org.springframework.cloud</groupId> ? ? ? ? ? ? <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> ? ? ? ? </dependency> ? ? ? ? <dependency> ? ? ? ? ? ? <groupId>org.springframework.cloud</groupId> ? ? ? ? ? ? <artifactId>spring-cloud-starter-openfeign</artifactId> ? ? ? ? ? ? <version>2.0.0.RC1</version> ? ? ? ? </dependency>
注意:spring-cloud 版本一定要選好,不然可能會(huì)找不到FeignClient,
再網(wǎng)上看到這樣一句話:
Spring Cloud對(duì)Feign的支持由org.springframework.cloud:spring-cloud-netflix-core
移到org.springframework.cloud:spring-cloud-openfeign-core下,
Finchley.M8版本下的spring-cloud-starter-openfeign:2.0.0.M2的pom依賴文件中導(dǎo)入的是
spring-cloud-netflix-core而非spring-cloud-openfeign-core,
需要我們?cè)趐om文件中添加對(duì)應(yīng)依賴管理使spring-cloud-starter-openfeign版本
更新到2.0.0.RC1
那么接下來(lái)我們進(jìn)行代碼整理
編寫接口
@FeignClient(name="eureka-client-1") public interface EurekaClient { ? ? @GetMapping("/info") ? ? String getInfo(); }
調(diào)用
?@GetMapping("getMessage") ? ? public String getMessage(){ ? ? ? ? String res = ?eurekaClient.getInfo(); ? ? ? ? return res; ? ? }
Feign通過(guò)服務(wù)名調(diào)用服務(wù),找不到服務(wù)
報(bào)錯(cuò)環(huán)境
- eureka注冊(cè)中心在遠(yuǎn)程服務(wù)器上
- 本地服務(wù)注冊(cè)到遠(yuǎn)程的eureka注冊(cè)中心
- 本地服務(wù)通過(guò)Fegin組件+服務(wù)名調(diào)用服務(wù)
報(bào)錯(cuò)時(shí),注冊(cè)中心的情況
Application?? ??? ??? ??? ?Status SERVICE-HOT?? ??? ??? ?192.168.22.180:8308 SERVICE-REDIS?? ??? ?127.0.0.1:4046 SERVICE-ZUUL?? ??? ?127.0.0.1:4041
報(bào)錯(cuò)情況
feign.RetryableException: connect timed out executing GET http://SERVICE-REDIS/redis/NaviKey-24149-1
at feign.FeignException.errorExecuting(FeignException.java:84)
at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:113)
排查后發(fā)現(xiàn):是因?yàn)樽?cè)服務(wù)ip問(wèn)題,導(dǎo)致本地服務(wù)無(wú)法通過(guò)服務(wù)名字找到相應(yīng)的服務(wù)。
- 遠(yuǎn)程項(xiàng)目和eureka服務(wù)部署在同一臺(tái)服務(wù)器上,所以通過(guò)127.0.0.1去服務(wù)中心注冊(cè)服務(wù)是沒問(wèn)題的
- 本地項(xiàng)目通過(guò)遠(yuǎn)程服務(wù)器ip來(lái)注冊(cè)服務(wù),也沒問(wèn)題
- 在同一個(gè)注冊(cè)中心上,可以互相發(fā)現(xiàn)服務(wù),就是通過(guò)名字可以找到對(duì)方,沒錯(cuò)
- 問(wèn)題在于, 當(dāng)本地SERVICE-HOT服務(wù)在eureka中心找到SERVICE-REDIS服務(wù)后,redis服務(wù)告訴他,我的服務(wù)ip地址是127.0.0.1:4046.那么,這就有問(wèn)題了!!!
- 本地服務(wù)和遠(yuǎn)程服務(wù)不在一臺(tái)服務(wù)器上,你的127.0.0.1是自己的服務(wù)器ip,本地服務(wù)肯定找不到
- 所以,注冊(cè)服務(wù)時(shí),統(tǒng)一都使用服務(wù)器ip來(lái)注冊(cè)就行了,修改后的配置中心如下:
Application?? ??? ??? ??? ?Status SERVICE-HOT?? ??? ??? ?192.168.22.180:8308 SERVICE-REDIS?? ??? ?192.168.22.180:4046 SERVICE-ZUUL?? ??? ?192.168.22.180:4041
不修改服務(wù)注冊(cè)配置,還有一種辦法:使用fegin時(shí),通過(guò)url指定訪問(wèn)服務(wù)的ip
@FeignClient(value = "SERVICE-REDIS", ? ? ? ? url="http://192.168.22.180:4041/service-redis" , ? ? ? ? fallback = RedisSvcFallback.class) public interface RedisSvc {
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于spring boot整合kafka+注解方式
這篇文章主要介紹了關(guān)于spring boot整合kafka+注解方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09springcloud如何獲取網(wǎng)關(guān)封裝的頭部信息
這篇文章主要介紹了springcloud獲取網(wǎng)關(guān)封裝的頭部信息,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06SpringBoot整合MyBatis-Plus3.1教程詳解
這篇文章主要介紹了SpringBoot整合MyBatis-Plus3.1詳細(xì)教程,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08SpringMVC中的@RequestMapping注解的使用詳細(xì)教程
@RequestMapping注解的作用就是將請(qǐng)求和處理請(qǐng)求的控制器方法關(guān)聯(lián)起來(lái),建立映射關(guān)系,本文主要來(lái)和大家詳細(xì)講講它的具體使用,感興趣的可以了解一下2023-07-07java如何獲取兩個(gè)List集合之間的交集、差集、并集
在日常開發(fā)中經(jīng)常會(huì)遇到對(duì)2個(gè)集合的操作,例如2個(gè)集合之間取相同的元素(交集),2個(gè)集合之間取不相同的元素(差集)等等,這篇文章主要給大家介紹了關(guān)于java如何獲取兩個(gè)List集合之間的交集、差集、并集的相關(guān)資料,需要的朋友可以參考下2024-02-02mybatis實(shí)現(xiàn)批量修改-xml方式
這篇文章主要介紹了mybatis實(shí)現(xiàn)批量修改-xml方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11SpringBoot項(xiàng)目導(dǎo)入aliyun oss starter依賴后啟動(dòng)報(bào)錯(cuò)問(wèn)題
這篇文章主要介紹了SpringBoot項(xiàng)目導(dǎo)入aliyun oss starter依賴后啟動(dòng)報(bào)錯(cuò)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01