天天看點

Spring Cloud(四)服務提供者 Eureka + 服務消費者 Feign

上一篇文章,講述了如何通過RestTemplate + Ribbon去消費服務,這篇文章主要講述如何通過Feign去消費服務。

Feign簡介

Feign是一個聲明式的僞Http用戶端,它使得寫Http用戶端變得更簡單。

使用Feign,隻需要建立一個接口并注解,它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解,Feign支援可插拔的編碼器和解碼器,Feign預設內建了Ribbon,并和Eureka結合,預設實作了負載均衡的效果。

Feign 具有如下特性:

可插拔的注解支援,包括Feign注解和JAX-RS注解

支援可插拔的HTTP編碼器和解碼器

支援Hystrix和它的Fallback

支援Ribbon的負載均衡

支援HTTP請求和響應的壓縮Feign是一個聲明式的Web Service用戶端,它的目的就是讓Web Service調用更加簡單。它整合了Ribbon和Hystrix,進而不再需要顯式地使用這兩個元件。Feign還提供了HTTP請求的模闆,通過編寫簡單的接口和注解,就可以定義好HTTP請求的參數、格式、位址等資訊。接下來,Feign會完全代理HTTP的請求,我們隻需要像調用方法一樣調用它就可以完成服務請求。

簡而言之:Feign能幹Ribbon和Hystrix的事情,但是要用Ribbon和Hystrix自帶的注解必須要引入相應的jar包才可以。

準備工作

Eureka Service

導入第三篇文章中的項目:作為服務注冊中心

spring-cloud-eureka-service

Eureka Provider

導入第三篇文章中的項目:作為服務的提供者

spring-cloud-eureka-provider-1

spring-cloud-eureka-provider-2

spring-cloud-eureka-provider-3

Feign Consumer

服務消費者

添加依賴

建立項目spring-cloud-feign-consumerpom.xml中引入需要的依賴内容:

開啟Feign

在工程的啟動類中,通過@EnableFeignClients 注解開啟Feign的功能:

定義接口

通過@FeignClient("服務名"),來指定調用哪個服務。

比如在代碼中調用了eureka-provider服務的/ 接口,/ 就是調用:服務提供者項目:spring-cloud-eureka-provider-1,spring-cloud-eureka-provider-2,spring-cloud-eureka-provider-3 的home() 方法,代碼如下:

消費方法

寫一個Controller,消費提供者的home 方法

添加配置

完整配置application.yml

指定注冊中心位址,配置自己的服務名稱

測試服務

依次啟動項目:

spring-cloud-feign-consumer

負載均衡響應

源碼下載下傳