SpringCloud系列之Eureka(三)

Feign

我們?cè)谶M(jìn)行微服務(wù)項(xiàng)目的開發(fā)的時(shí)候轿钠,經(jīng)常會(huì)遇到一個(gè)問題举农,比如A服務(wù)是一個(gè)針對(duì)用戶的服務(wù)侦啸,里面有用戶的增刪改查的接口和方法梅鹦,而現(xiàn)在我有一個(gè)針對(duì)產(chǎn)品的服務(wù)B服務(wù)中有一個(gè)查找用戶的需求,這個(gè)時(shí)候我們可以在B服務(wù)里再寫一個(gè)查找用戶的接口鲁豪,可是就為了一個(gè)接口就得從控制層到持久層都寫一遍怎么看都不值當(dāng)潘悼,最關(guān)鍵的是這個(gè)接口在別的服務(wù)里面還有律秃,這就更不應(yīng)該做了,所以springCloud提供了服務(wù)調(diào)用的方法——feign治唤。

一棒动、Feign

1.Eureka注冊(cè)中心

注冊(cè)中心較為簡單,這里就不多贅述宾添,不清楚的可以參考系列第一篇船惨。

2.服務(wù)提供者

pom.xml文件如下:

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

2.yml文件需要修改配置

server:
  port: 9992
spring:
  application:
    name: spring-cloud-order-service-provider
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:9991/eureka //這里是server工程地址
    register-with-eureka: true  # ??就是服務(wù)不需要注冊(cè)?? 集群模式下可以改成true
    fetch-registry: true # ??就是服務(wù)不需要從Eureka Server獲取服務(wù)信息,默認(rèn)為true,集群模式下可以改成true

3.啟動(dòng)項(xiàng)需要添加的注解和server不一樣缕陕,使用@EnableDiscoveryClient

@SpringBootApplication
@EnableDiscoveryClient
public class EurekaClientApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaClientApplication.class, args);
    }
}

4.我們這邊寫一個(gè)方法粱锐,等下使用,新建一個(gè)controller文件夾扛邑,創(chuàng)建一個(gè)controller.

@RestController
@RequestMapping("/order/data")
public class OrderStatisticServiceController {
    @Value("${server.port}")
    private Integer port;
    
    @GetMapping("/getResult/{id}")
    public String getResult(@PathVariable("id") Integer id) {
        return "getResult = " + id;
    }
}

5.啟動(dòng)當(dāng)前服務(wù)提供者

這里在server頁面就可以看到已經(jīng)注冊(cè)成功怜浅。

3.服務(wù)調(diào)用者

Feign依賴于Eureka環(huán)境,所以我們?cè)谏厦娴幕A(chǔ)上新增一個(gè)子module即可

1.pom.xml文件如下,相比上面簡單調(diào)用的第四步多一個(gè)關(guān)于Feign的依賴

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
    </dependencies>

2.yml配置文件

server:
  port: 9994
spring:
  application:
    name: spring-cloud-user-feign-consumer # 應(yīng)用名稱蔬崩,應(yīng)用名稱會(huì)在Eureka中作為服務(wù)名稱
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:9991/eureka
    register-with-eureka: true  # ??就是服務(wù)不需要注冊(cè)?? 集群模式下可以改成true
    fetch-registry: true # ??就是服務(wù)不需要從Eureka Server獲取服務(wù)信息,默認(rèn)為true恶座,集群模式下可以改成true

3.啟動(dòng)項(xiàng)相比上面的調(diào)用者多個(gè)@EnableFeignClients注解

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class FeignApplication {
    public static void main(String[] args) {
        SpringApplication.run(FeignApplication.class, args);
    }
}

4.我們使用Feign需要?jiǎng)?chuàng)建一個(gè)接口 這里舉個(gè)簡單的例子

@FeignClient(name = "spring-cloud-order-service-provider") //這里是服務(wù)提供者在Eureka中的名稱
public interface IResultInterface {
    @RequestMapping(value = "/order/getResult/{id}") //服務(wù)提供者的接口路由
    String getResult(@PathVariable("id") Integer id);
}

5.我們創(chuàng)建當(dāng)前module的Controller調(diào)用的接口

@RestController
@RequestMapping("/order")
public class ResultController {

    @Autowired
    IResultInterface iResultInterface; //這里使用接口來完成方法的請(qǐng)求

    @RequestMapping("/getResult/{id}")
    public String getResult(@PathVariable("id") Integer id) {
        return iResultInterface.getResult(id);
    }
}

6.啟動(dòng)并訪問看看效果

這里看到我們請(qǐng)求的是9994的新的服務(wù)調(diào)用者工程 但是返回值的服務(wù)提供者的結(jié)果,說明這里Feign使用成功沥阳。

代碼已上傳至Github

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末跨琳,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子桐罕,更是在濱河造成了極大的恐慌脉让,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件功炮,死亡現(xiàn)場(chǎng)離奇詭異侠鳄,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)死宣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來碴开,“玉大人毅该,你說我怎么就攤上這事×逝#” “怎么了眶掌?”我有些...
    開封第一講書人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長巴碗。 經(jīng)常有香客問我朴爬,道長,這世上最難降的妖魔是什么橡淆? 我笑而不...
    開封第一講書人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任召噩,我火速辦了婚禮母赵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘具滴。我一直安慰自己凹嘲,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開白布构韵。 她就那樣靜靜地躺著周蹭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪疲恢。 梳的紋絲不亂的頭發(fā)上凶朗,一...
    開封第一講書人閱讀 51,521評(píng)論 1 304
  • 那天,我揣著相機(jī)與錄音显拳,去河邊找鬼棚愤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛萎攒,可吹牛的內(nèi)容都是我干的遇八。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼耍休,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼刃永!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起羊精,我...
    開封第一講書人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤斯够,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后喧锦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體读规,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年燃少,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了束亏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡阵具,死狀恐怖碍遍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情阳液,我是刑警寧澤怕敬,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站帘皿,受9級(jí)特大地震影響东跪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一虽填、第九天 我趴在偏房一處隱蔽的房頂上張望丁恭。 院中可真熱鬧,春花似錦卤唉、人聲如沸涩惑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽竭恬。三九已至,卻和暖如春熬的,著一層夾襖步出監(jiān)牢的瞬間痊硕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來泰國打工押框, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留岔绸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓橡伞,卻偏偏與公主長得像盒揉,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子兑徘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

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

  • 一刚盈、注冊(cè)中心 1.簡單調(diào)用 1.Parent項(xiàng)目 主要父級(jí)依賴文件詳細(xì)pom文件為: 2.Eureka Serve...
    ljchengx閱讀 542評(píng)論 0 5
  • Ribbon 一、服務(wù)提供者 1.Eureka注冊(cè)中心 注冊(cè)中心較為簡單挂脑,這里就不多贅述藕漱,不清楚的可以參考上一篇。...
    ljchengx閱讀 509評(píng)論 0 7
  • 本文章僅作為個(gè)人筆記 eureka的集成(注冊(cè)中心)新建springboot項(xiàng)目并在build.gradle文件添...
    草叢里的黃蓋閱讀 638評(píng)論 0 3
  • 0. 前言 使用RestTemplate發(fā)送請(qǐng)求 了解SpringCloud的作用 搭建Eureka注冊(cè)中心 了解...
    abboo閱讀 595評(píng)論 0 1
  • 一橄仍、什么是微服務(wù)架構(gòu)? 微服務(wù)架構(gòu)是一種架構(gòu)模式或者說是一種架構(gòu)風(fēng)格牍戚, 它提倡將單一應(yīng)用程序劃分成一組小的服務(wù) 沙兰,...
    西谷haul閱讀 448評(píng)論 0 1