「 從0到1學習微服務SpringCloud 」05服務消費者Fegin

系列文章(更新ing):

「 從0到1學習微服務SpringCloud 」01 一塊兒來學呀! 「 從0到1學習微服務SpringCloud 」02 Eureka服務註冊與發現
「 從0到1學習微服務SpringCloud 」03 Eureka的自我保護機制
「 從0到1學習微服務SpringCloud 」04服務消費者Ribbon+RestTemplatespring

Fegin簡介

Feign是一個聲明式的僞Http客戶端,它使得寫Http客戶端變得更簡單。使用Feign,只須要建立一個接口並註解。Feign默認集成了Ribbon,並和Eureka結合,默認實現了負載均衡的效果。瀏覽器

準備工做

繼續用上節的工程, 啓動eureka-server,端口爲8761;啓動service-hi 兩次,端口分別爲8762 、8863app

簡單使用

繼續使用上節的eureka-client工程
1.加入Fegin依賴負載均衡

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

2.在啓動類加上@EnableFeignClients註解,開啓Feign的功能微服務

@SpringBootApplication
@EnableEurekaClient
//加下面這個
@EnableFeignClients
public class EurekaClientApplication {

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

    @Bean
    @LoadBalanced
    RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

3.定義一個feign接口,經過@ FeignClient(「服務名」),來指定調用哪一個服務
好比在代碼中調用了service-hi服務的「/hi」接口,代碼以下:學習

@FeignClient("service-hi")
public interface  FeginClient {
    //service-hi服務中名字爲"hi"的接口
    @GetMapping("hi")
    String sayHi();
}

4.在controller層,對外暴露一個"hiFromFegin"的API接口,經過上面定義的Feign客戶端sayHi 來消費服務spa

//編譯器報錯,無視。 
//由於這個Bean是在程序啓動的時候注入的,編譯器感知不到,因此報錯。
@Autowired
private FeginClient feginClient;

@GetMapping("hiFromFegin")
    public String hiFromFegin() {
        return feginClient.sayHi();
    }

5.啓動程序,屢次訪問http://localhost:8861/hiFromFegin,瀏覽器交替顯示3d

hi!i am come from 8862hi!
i am come from 8863

至此,使用Feign消費服務已實現,Feign內置ribbon,帶負載均衡的效果rest

Feign的優點(相比RestTemplate)

1.聲明式的REST客戶端,經過編寫簡單的接口和插入註解,只須要像調用本地方法同樣調用它就能夠完成服務請求及相關處理,使REST調用更加簡單code

若使用RestTemplate,則須要深刻了解HTTP級別API的細節。

2.內置Ribbon,配合Eureka實現負載均衡

若是以爲不錯,分享給你的朋友!

image

image

 THANDKS

  • End -

一個立志成大腿而天天努力奮鬥的年輕人

伴學習伴成長,成長之路你並不孤單!

掃描二維碼,關注公衆號

相關文章
相關標籤/搜索