上一篇文章,講述了如何通過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
負載均衡響應
源碼下載下傳