feign實(shí)現(xiàn)遠(yuǎn)程調(diào)用

1魔招、簡介
Feign是Netflix開發(fā)的聲明式、模板化的HTTP客戶端, Feign可以幫助我們更快捷眯牧、優(yōu)雅地調(diào)用HTTP API蹋岩。
在Spring Cloud中,使用Feign非常簡單——創(chuàng)建一個接口学少,并在接口上添加一些注解剪个,代碼就完成了。Feign支持多種注解版确,例如Feign自帶的注解或者JAX-RS注解等扣囊。
Spring Cloud對Feign進(jìn)行了增強(qiáng),使Feign支持了Spring MVC注解阀坏,并整合了Ribbon和Eureka如暖,從而讓Feign的使用更加方便。
Spring Cloud Feign是基于Netflix feign實(shí)現(xiàn)忌堂,整合了Spring Cloud Ribbon和Spring Cloud Hystrix,除了提供這兩者的強(qiáng)大功能外酗洒,還提供了一種聲明式的Web服務(wù)客戶端定義的方式士修。

2、導(dǎo)入jar包

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!--由于feign整合了ribbon的負(fù)載均衡樱衷,所以需要引入ribbon的依賴?-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
    <version>2.1.1.RELEASE</version>
</dependency>
<!--需要從eureka拉取服務(wù)?-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-netflix-eureka-client</artifactId>
    <version>2.1.1.RELEASE</version>
</dependency>

3棋嘲、啟動類添加注解支持

@EnableFeignClients

4、客戶端編寫

  //定義接口
    package com.sun.client;
    
    import org.springframework.cloud.openfeign.FeignClient;
    import org.springframework.web.bind.annotation.GetMapping;
    
    @FeignClient(value = "user-service")   //聲明這是feign的客戶端
    public interface UserFeignClient {
        @GetMapping("user")
        public String getUser();
    }
    注釋:
這是一個接口矩桂,F(xiàn)eign會通過動態(tài)代理沸移,幫我們生成實(shí)現(xiàn)類。這點(diǎn)跟mybatis的mapper很像
@FeignClient侄榴,聲明這是一個Feign客戶端雹锣,類似@Mapper注解。同時(shí)通過value屬性指定服務(wù)名稱
接口中的定義方法癞蚕,完全采用SpringMVC的注解蕊爵,F(xiàn)eign會根據(jù)注解幫我們生成URL,并訪問獲取結(jié)果
改造原來的調(diào)用邏輯桦山,不再調(diào)用UserDao:

     //實(shí)現(xiàn)調(diào)用
    @Autowired
    private UserFeignClient userFeignClient;
    @GetMapping("feign")
    public Object feign(){
       return userFeignClient.getUser();
    }

5攒射、feign自動實(shí)現(xiàn)負(fù)載均衡
6、feign的重試

#feign的重試與ribbon的配置相同恒水,只要添加相應(yīng)的配置即可会放。
client:
  ribbon:
      MaxAutoRetries: 1 #配置首臺服務(wù)器重試1次
      MaxAutoRetriesNextServer: 2#配置其他服務(wù)器重試兩次
      ConnectTimeout: 500    #鏈接超時(shí)時(shí)間
      ReadTimeout: 2000    #請求處理時(shí)間
      OkToRetryOnAllOperations: true    #每個操作都開啟重試機(jī)制

7、feign與hystrix的集成配置熔斷機(jī)制

a钉凌、 添加熔斷配置

feign:
     hystrix:
         enabled: true     #允許熔斷

b咧最、添加熔斷處理類

//實(shí)現(xiàn) UserFeignClient接口
    @Component
    public class UserFeignClientImpl implements UserFeignClient {
        @Override
        public String getUser() {
            return "訪問人數(shù)過多";
        }
    }

c、實(shí)現(xiàn)調(diào)用

@FeignClient(value = "user-service",fallback = UserFeignClientImpl.class)   //聲明這是feign的客戶端     fallback  哪個出現(xiàn)訪問延遲 就調(diào)用哪個方法的實(shí)現(xiàn)返回處理結(jié)果
public interface UserFeignClient {   //接口定義
    @GetMapping("user")
    public String getUser();
}
//調(diào)用
@Autowired    
    private UserFeignClient userFeignClient;
    @GetMapping("feign")
    public Object feign(){
       return userFeignClient.getUser();
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市窗市,隨后出現(xiàn)的幾起案子先慷,更是在濱河造成了極大的恐慌,老刑警劉巖咨察,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件论熙,死亡現(xiàn)場離奇詭異,居然都是意外死亡摄狱,警方通過查閱死者的電腦和手機(jī)脓诡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來媒役,“玉大人祝谚,你說我怎么就攤上這事『ㄖ裕” “怎么了交惯?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長穿仪。 經(jīng)常有香客問我席爽,道長,這世上最難降的妖魔是什么啊片? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任只锻,我火速辦了婚禮,結(jié)果婚禮上紫谷,老公的妹妹穿的比我還像新娘齐饮。我一直安慰自己,他們只是感情好笤昨,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布祖驱。 她就那樣靜靜地躺著,像睡著了一般咬腋。 火紅的嫁衣襯著肌膚如雪羹膳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天根竿,我揣著相機(jī)與錄音陵像,去河邊找鬼。 笑死寇壳,一個胖子當(dāng)著我的面吹牛醒颖,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播壳炎,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼泞歉,長吁一口氣:“原來是場噩夢啊……” “哼琅关!你這毒婦竟也來了党瓮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎荚醒,沒想到半個月后汪诉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體讼稚,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡舅踪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了选侨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片掖鱼。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖援制,靈堂內(nèi)的尸體忽然破棺而出戏挡,到底是詐尸還是另有隱情,我是刑警寧澤晨仑,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布褐墅,位于F島的核電站,受9級特大地震影響洪己,放射性物質(zhì)發(fā)生泄漏掌栅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一码泛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧澄耍,春花似錦噪珊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至选酗,卻和暖如春阵难,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背芒填。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工呜叫, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人殿衰。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓朱庆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親闷祥。 傳聞我的和親對象是個殘疾皇子娱颊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容