Spring Cloud-Feign服務(wù)調(diào)用的問題及處理方法
概述:
• Feign 是一個(gè)聲明式的 REST 客戶端,它用了基于接口的注解方式,很方便實(shí)現(xiàn)客戶端配置。
• Feign 最初由 Netflix 公司提供,但不支持SpringMVC注解,后由 SpringCloud 對(duì)其封裝,支持了SpringMVC注
解,讓使用者更易于接受

首先在調(diào)用者的pom中加入如下坐標(biāo)
<!--feign-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
然后在啟動(dòng)類上添加注解
@EnableFeignClients以啟用Feign
最后創(chuàng)建一個(gè)接口,方法參數(shù)映射全部按照我們要調(diào)用的那個(gè)controller寫一個(gè)
value的值是應(yīng)用名稱
/**
*
* feign聲明式接口。發(fā)起遠(yuǎn)程調(diào)用的。
*
String url = "http://eureka-provider/provider/getUser/"+id;
User user = restTemplate.getForObject(url, User.class);
*
* 1. 定義接口
* 2. 接口上添加注解 @FeignClient,設(shè)置value屬性為 服務(wù)提供者的 應(yīng)用名稱
* 3. 編寫調(diào)用接口,接口的聲明規(guī)則 和 提供方接口保持一致。
* 4. 注入該接口對(duì)象,調(diào)用接口方法完成遠(yuǎn)程調(diào)用
*/
@FeignClient(value = "eureka-provider")
@RequestMapping("/provider")
public interface FeignProviderUserController {
@GetMapping("/getUser/{id}")
public ResponseEntity<User> getUser(@PathVariable("id")String id);
}
然后我們將這個(gè)接口注入到我們要使用的地方,就可以直接調(diào)用那個(gè)方法了
/**
* Feign形式的服務(wù)調(diào)用
* @param id
* @return
*/
@GetMapping("/FeignClientGetUser/{id}")
public ResponseEntity<User> FeignClientGetUser(@PathVariable("id") String id){
System.out.println("進(jìn)入");
ResponseEntity<User> user = feignConsumerUserClient.getUser(id);
return user;
}
現(xiàn)在存在一個(gè)問題,就是按照應(yīng)用名稱調(diào)用的時(shí)候。取到的對(duì)象name是正確的,但是url卻是http://+name,并不是我們想要的http://+host+port+uri,
正在解決…
結(jié)果:{好吧需要ribbon}

Feign超時(shí)配置
Feign 底層依賴于 Ribbon 實(shí)現(xiàn)負(fù)載均衡和遠(yuǎn)程調(diào)用。
• Ribbon默認(rèn)1秒超時(shí)。
• 超時(shí)配置:
在調(diào)用者的配置文件中加入
# 設(shè)置Ribbon的超時(shí)時(shí)間 ribbon: ConnectTimeout: 1000 # 連接超時(shí)時(shí)間 默認(rèn)1s 默認(rèn)單位毫秒 ReadTimeout: 3000 # 邏輯處理的超時(shí)時(shí)間 默認(rèn)1s 默認(rèn)單位毫秒
Feign日志記錄
logging: level: debug #配置日志級(jí)別
如果報(bào)錯(cuò)Failed to bind properties under 'logging.level',是因?yàn)閟pringboot2.0.0以后的版本只支持如下這種配置,需要指定名稱
logging:
level:
root: info #配置日志級(jí)別
到此這篇關(guān)于Spring Cloud-Feign服務(wù)調(diào)用的文章就介紹到這了,更多相關(guān)Spring Cloud-Feign服務(wù)調(diào)用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java并發(fā)工具之Exchanger線程間交換數(shù)據(jù)詳解
這篇文章主要介紹了Java并發(fā)工具之Exchanger線程間交換數(shù)據(jù)詳解,Exchanger是一個(gè)用于線程間協(xié)作的工具類,Exchanger用于進(jìn)行線程間的數(shù)據(jù)交 換,它提供一個(gè)同步點(diǎn),在這個(gè)同步點(diǎn),兩個(gè)線程可以交換彼此的數(shù)據(jù),需要的朋友可以參考下2023-12-12
Java線程的并發(fā)工具類實(shí)現(xiàn)原理解析
本文給大家講解Java線程的并發(fā)工具類的一些知識(shí),通過適用場(chǎng)景分析大數(shù)據(jù)量統(tǒng)計(jì)類任務(wù)的實(shí)現(xiàn)原理和封裝,多個(gè)示例代碼講解的非常詳細(xì),對(duì)java線程并發(fā)工具類相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)下吧2021-06-06
Springboot處理配置CORS跨域請(qǐng)求時(shí)碰到的坑
本篇文章介紹了我在開發(fā)過程中遇到的一個(gè)問題,以及解決該問題的過程及思路,通讀本篇對(duì)大家的學(xué)習(xí)或工作具有一定的價(jià)值,需要的朋友可以參考下2021-09-09
SpringBoot3整合Swagger3時(shí)出現(xiàn)Type javax.servlet.http.H的ttpSe
這篇文章主要介紹了SpringBoot3整合Swagger3時(shí)出現(xiàn)Type javax.servlet.http.H的ttpServletRequest not present錯(cuò)誤解決方法,文中有詳細(xì)的解決方法,需要的朋友可以參考下2025-01-01
Java之Spring認(rèn)證使用Profile配置運(yùn)行環(huán)境講解
這篇文章主要介紹了Java之Spring認(rèn)證使用Profile配置運(yùn)行環(huán)境講解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
SpringBoot居然有44種應(yīng)用啟動(dòng)器,你都知道嗎
很多人都不知道SpringBoot應(yīng)用啟動(dòng)器竟然有44個(gè),本文就一起來介紹一下,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2021-01-01

