Spring Cloud-Feign服務調(diào)用的問題及處理方法
概述:
• Feign 是一個聲明式的 REST 客戶端,它用了基于接口的注解方式,很方便實現(xiàn)客戶端配置。
• Feign 最初由 Netflix 公司提供,但不支持SpringMVC注解,后由 SpringCloud 對其封裝,支持了SpringMVC注
解,讓使用者更易于接受
首先在調(diào)用者的pom中加入如下坐標
<!--feign--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
然后在啟動類上添加注解
@EnableFeignClients
以啟用Feign
最后創(chuàng)建一個接口,方法參數(shù)映射全部按照我們要調(diào)用的那個controller寫一個
value
的值是應用名稱
/** * * feign聲明式接口。發(fā)起遠程調(diào)用的。 * String url = "http://eureka-provider/provider/getUser/"+id; User user = restTemplate.getForObject(url, User.class); * * 1. 定義接口 * 2. 接口上添加注解 @FeignClient,設置value屬性為 服務提供者的 應用名稱 * 3. 編寫調(diào)用接口,接口的聲明規(guī)則 和 提供方接口保持一致。 * 4. 注入該接口對象,調(diào)用接口方法完成遠程調(diào)用 */ @FeignClient(value = "eureka-provider") @RequestMapping("/provider") public interface FeignProviderUserController { @GetMapping("/getUser/{id}") public ResponseEntity<User> getUser(@PathVariable("id")String id); }
然后我們將這個接口注入到我們要使用的地方,就可以直接調(diào)用那個方法了
/** * Feign形式的服務調(diào)用 * @param id * @return */ @GetMapping("/FeignClientGetUser/{id}") public ResponseEntity<User> FeignClientGetUser(@PathVariable("id") String id){ System.out.println("進入"); ResponseEntity<User> user = feignConsumerUserClient.getUser(id); return user; }
現(xiàn)在存在一個問題,就是按照應用名稱調(diào)用的時候。取到的對象name是正確的,但是url卻是http://+name,并不是我們想要的http://+host+port+uri,
正在解決…
結(jié)果:{好吧需要ribbon}
Feign超時配置
Feign 底層依賴于 Ribbon 實現(xiàn)負載均衡和遠程調(diào)用。
• Ribbon默認1秒超時。
• 超時配置:
在調(diào)用者的配置文件中加入
# 設置Ribbon的超時時間 ribbon: ConnectTimeout: 1000 # 連接超時時間 默認1s 默認單位毫秒 ReadTimeout: 3000 # 邏輯處理的超時時間 默認1s 默認單位毫秒
Feign日志記錄
logging: level: debug #配置日志級別
如果報錯Failed to bind properties under 'logging.level'
,是因為springboot2.0.0以后的版本只支持如下這種配置,需要指定名稱
logging: level: root: info #配置日志級別
到此這篇關(guān)于Spring Cloud-Feign服務調(diào)用的文章就介紹到這了,更多相關(guān)Spring Cloud-Feign服務調(diào)用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot?使用clickhouse實時大數(shù)據(jù)分析引擎(使用方式)
這篇文章主要介紹了springboot?使用clickhouse實時大數(shù)據(jù)分析引擎的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2022-02-02IntelliJ IDEA中如何構(gòu)建Spring Boot的項目
這篇文章主要介紹了IntelliJ IDEA中如何構(gòu)建Spring Boot的項目問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07Java將網(wǎng)絡圖片轉(zhuǎn)成輸入流以及將url轉(zhuǎn)成InputStream問題
這篇文章主要介紹了Java將網(wǎng)絡圖片轉(zhuǎn)成輸入流以及將url轉(zhuǎn)成InputStream問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01Java 并發(fā)編程學習筆記之Synchronized底層優(yōu)化
這篇文章主要介紹了Java 并發(fā)編程學習筆記之Synchronized底層優(yōu)化的相關(guān)資料,主要包含了重量級鎖,輕量級鎖,偏向鎖和其他優(yōu)化等方面,有需要的小伙伴可以參考下2016-05-05