基于springboot服務(wù)間Feign調(diào)用超時(shí)的解決方案
解決springboot服務(wù)間Feign調(diào)用超時(shí)問題概述
1、起因
在完成項(xiàng)目功能需求的開發(fā),經(jīng)過自己測(cè)試以及通過測(cè)試組測(cè)試通過后,昨晚正式部署到線上環(huán)境進(jìn)行正式運(yùn)行前的最后一次的測(cè)試。但是在測(cè)試中,由A服務(wù)調(diào)用B服務(wù)接口時(shí),***通過Feign調(diào)用(其實(shí)就是http請(qǐng)求,當(dāng)A服務(wù)調(diào)用B服務(wù)時(shí),如果不配置超時(shí)時(shí)間,那么A發(fā)出請(qǐng)求后,B應(yīng)該立即響應(yīng),否則A服務(wù)會(huì)認(rèn)為B已經(jīng)斷開連接)出現(xiàn)***連接超時(shí)的錯(cuò)誤,錯(cuò)誤信息:Read timed out…
2、原因
用idea開發(fā)debug模式調(diào)試代碼時(shí),在處理服務(wù)間調(diào)用時(shí),由于debug模式調(diào)試代碼花費(fèi)一些時(shí)間,結(jié)果出現(xiàn)Fegin連接超時(shí)問題
3、解決方案
在springboot項(xiàng)目application.yml配置文件中添加
#解決跨服務(wù)問題
4、使用Feign的好處
首先我們的項(xiàng)目使用了SpringCloud技術(shù),而Feign可以和SpringCloud技術(shù)無(wú)縫整合。并且,你一旦使用了Feign作為http客戶端,調(diào)用遠(yuǎn)程的http接口就會(huì)變得像調(diào)用本地方法一樣簡(jiǎn)單。
5、項(xiàng)目如何使用Feign
(1) 首先你得引入Feign依賴的jar包:
gradle依賴:
compile "org.springframework.cloud:spring-cloud-netflix-core:1.3.2.RELEASE"
Maven依賴:
(2) 在properties配置文件中配置要調(diào)用的接口的URL路徑(域名部分)
url.xapi=http://xapi.xuebusi.com
(3) 聲明要調(diào)用的遠(yuǎn)程接口
6、說(shuō)明:
(1) @FeignClient 是Feign提供的注解,用于通知Feign組件對(duì)該接口進(jìn)行代理(不需要編寫接口實(shí)現(xiàn)),使用者可直接通過@Autowired注入。
(2) @RequestMapping 是Spring提供的注解,這里可以直接使用以前使用SpringMVC時(shí)用過的各種注解,唯一不同的是,這里只是把注解用在了接口上。
(3) 如果將Feign與Eureka組合使用,@FeignClient(name = “xapi”)意為通知Feign在調(diào)用該接口方法時(shí)要向Eureka中查詢名為 xapi 的服務(wù),從而得到服務(wù)URL,
(4) 但是遠(yuǎn)程的http接口并不是我們自己的,我們無(wú)法把它注冊(cè)到Eureka中,所以這里我們就使用 url = “${url.xapi}” 把要調(diào)用的接口的url域名部分直接寫死到配置文件中。
feign超時(shí)問題解決必殺技
1、配置中添加:
feign: hystrix: enabled: false
2、添加:
hystrix: command: default: execution: timeout: enabled: false
3、添加:
ribbon: ReadTimeout: 10000 ConnectTimeout: 10000
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Cloud Feign實(shí)例講解學(xué)習(xí)
這篇文章主要介紹了Spring Cloud Feign實(shí)例講解學(xué)習(xí),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2018-02-02Java中在時(shí)間戳計(jì)算的過程中遇到的數(shù)據(jù)溢出問題解決
這篇文章主要介紹了Java中在時(shí)間戳計(jì)算的過程中遇到的數(shù)據(jù)溢出問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06如何利用Map與函數(shù)式接口來(lái)實(shí)現(xiàn)去除if else
這篇文章主要介紹了如何利用Map與函數(shù)式接口來(lái)實(shí)現(xiàn)去除if else問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07java程序中指定某個(gè)瀏覽器打開的實(shí)現(xiàn)方法
最近工作中遇到一個(gè)需求,是要利用java打開指定瀏覽器,整理后發(fā)現(xiàn)有四種解決的方法,所以想著分享出來(lái),下面這篇文章主要給大家介紹了java程序中指定某個(gè)瀏覽器打開的實(shí)現(xiàn)方法,,需要的朋友可以參考下。2017-03-03SpringBoot整合定時(shí)任務(wù)之實(shí)現(xiàn)Scheduled注解的過程(一個(gè)注解全解決)
這篇文章主要介紹了SpringBoot整合定時(shí)任務(wù)之實(shí)現(xiàn)Scheduled注解的過程(一個(gè)注解全解決),本文通過使用場(chǎng)景分析給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09SpringSecurity6自定義JSON登錄的實(shí)現(xiàn)
目前最新版的Spring Boot已經(jīng)到了3.0.5了,隨之而來(lái)Spring Security 目前的版本也到了6.0.2了,Spring Security寫法的變化特別多,本文就來(lái)介紹下,感興趣的可以了解一下2023-12-12