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,設(shè)置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)用者的配置文件中加入
# 設(shè)置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)文章
Java并發(fā)工具之Exchanger線程間交換數(shù)據(jù)詳解
這篇文章主要介紹了Java并發(fā)工具之Exchanger線程間交換數(shù)據(jù)詳解,Exchanger是一個用于線程間協(xié)作的工具類,Exchanger用于進行線程間的數(shù)據(jù)交 換,它提供一個同步點,在這個同步點,兩個線程可以交換彼此的數(shù)據(jù),需要的朋友可以參考下2023-12-12
SpringBoot3整合Swagger3時出現(xiàn)Type javax.servlet.http.H的ttpSe
這篇文章主要介紹了SpringBoot3整合Swagger3時出現(xiàn)Type javax.servlet.http.H的ttpServletRequest not present錯誤解決方法,文中有詳細的解決方法,需要的朋友可以參考下2025-01-01
Java之Spring認證使用Profile配置運行環(huán)境講解
這篇文章主要介紹了Java之Spring認證使用Profile配置運行環(huán)境講解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07

