1,遠(yuǎn)程調(diào)用基本介紹
1.1,@FeignClient標(biāo)簽的常用屬性如下:
??? name:指定FeignClient的名稱,如果項(xiàng)目使用了Ribbon,name屬性會(huì)作為微服務(wù)的名稱,用于服務(wù)發(fā)現(xiàn)
??? url: url一般用于調(diào)試,可以手動(dòng)指定@FeignClient調(diào)用的地址
??? path: 定義當(dāng)前FeignClient的統(tǒng)一前綴,當(dāng)我們項(xiàng)目中配置了server.context-path,server.servlet-path時(shí)使用
1.2,兩個(gè)微服務(wù)模塊之間,調(diào)用者和被調(diào)用者
1.2.1,前提:兩個(gè)服務(wù)都已經(jīng)注冊到同一個(gè)注冊中心;
1.2.2,網(wǎng)絡(luò)結(jié)構(gòu)
場景1:兩個(gè)服務(wù)部署在同一臺(tái)服務(wù)器,或者同一個(gè)網(wǎng)段;
場景2:兩個(gè)服務(wù)在不同的服務(wù)器【容易出問題的模式】
1.2.3,被調(diào)用者的注冊地址,是可以被調(diào)用者的運(yùn)行環(huán)境直接訪問的;
調(diào)用者代碼
@FeignClient(name="FEEINTE",path="/feeinte") public interface FeeInterfaceService { @RequestMapping(value="selectAllCi") List<Ci> selectAllCi();
被調(diào)用者配置文件
feeinte服務(wù)的配置文件
server.port=1903
spring.application.name=FEEINTE
#server端的hostname
eureka.instance.hostname=223.70.130.11
#注冊到server的實(shí)例id,具備唯一性
eureka.instance.instance-id=${eureka.instance.hostname}:${server.port}/${spring.application.name}
#注冊服務(wù)時(shí)是否使用IP注冊,默認(rèn)false
eureka.instance.prefer-ip-address=true
#server端的ip地址
eureka.instance.ip-address=223.70.130.11
1.2.4,后臺(tái)運(yùn)行過程:調(diào)用者請求FEEINTE,到eureka注冊中心根據(jù)FEEINTE獲得223.70.130.11和1903,拼接成最終訪問地址223.70.130.11:1903/feeinte/selectAllCi
其中feeinte和tomcat/webapps文件夾名稱一致;
2,常見異常信息和處理方案
2.1,找不到FEEINTE;除了檢查被調(diào)用方名稱,正常啟動(dòng)外,還要留意服務(wù)注冊到注冊中心需要一定的時(shí)間;
2.2,連接拒絕
feign.RetryableException: Connection refused: connect executing GET http://FEEINTE/feeinte/selectAllCi
at feign.FeignException.errorExecuting(FeignException.java:67)
at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:104)
at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:76)
at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:103)
at com.sun.proxy.$Proxy92.selectAllCity(Unknown Source)
2.3,連接超時(shí)
feign.RetryableException: Connection timed out: connect executing GET http://FEEINTE/feeinte/selectAllCi
at feign.FeignException.errorExecuting(FeignException.java:67)
at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:104)
at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:76)
3,分析過程:
3.1,當(dāng)調(diào)用失敗的時(shí)候,把path直接替換為url;確保被調(diào)用端服務(wù)是正常的;
替換前
@FeignClient(name="FEEINTE",path="/feeinte")
替換后
@FeignClient(name="FEEINTE",url="http://223.70.160.141:1903/feeinte/")
3.2,查看具體報(bào)錯(cuò)信息中能體現(xiàn)實(shí)際的后臺(tái)地址
2023-02-24 13:44:36.433? INFO 32373 --- [-nio-443-exec-9] c.n.l.DynamicServerListLoadBalancer????? : DynamicServerListLoadBalancer for client FEEINTERFACE initialized: DynamicServerListLoadBalancer:{NFLoadBalancer:name=FEEINTE,current list of Servers=[223.70.130.141:1903],Load balancer stats=Zone stats: {defaultzone=[Zone:defaultzone;????? Instance count:1;?????? Active connections count: 0;??? Circuit breaker tripped count: 0;?????? Active connections per server: 0.0;]
},Server stats: [[Server:223.70.130.141:1903;? Zone:defaultZone;?????? Total Requests:0;?????? Successive connection failure:0;??????? Total blackout seconds:0;?????? Last connection made:Thu Jan 01 08:00:00 CST 1970;????? First connection made: Thu Jan 01 08:00:00 CST 1970;??????? Active Connections:0;?? total failure count in last (1000) msecs:0;???? average resp time:0.0;? 90 percentile resp time:0.0;??? 95 percentile resp time:0.0;??? min resp time:0.0;????? max resp time:0.0;? stddev resp time:0.0]
]}ServerList:org.springframework.cloud.netflix.ribbon.eureka.DomainExtractingServerList@32dc7614
feign.RetryableException: Connection refused (Connection refused) executing GET http://FEEINTE/feeinte/selectAllCi文章來源:http://www.zghlxwxcb.cn/news/detail-785073.html
3.2.1,根據(jù)實(shí)際請求地址,排查客戶端配置文件;文章來源地址http://www.zghlxwxcb.cn/news/detail-785073.html
到了這里,關(guān)于springboot遠(yuǎn)程調(diào)用常見問題feign.RetryableException: Connection timed out的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!