Feign 是一個聲明式的 Web Service 客戶端,它的目的就是讓 Web Service 調用更加簡單。它整合了 Ribbon 和 Hystrix,從而讓我們不再需要顯式地使用這兩個組件。Feign 還提供了 HTTP 請求的模板,通過編寫簡單的接口和插入註解,我們就可以定義好 HTTP 請求的參數、格式、地址等信息。Feign 會完全代理 HTTP 的請求,我們只需要像調用方法一樣調用它就可以完成服務請求。
Feign 具有如下特性:
- 可插拔的註解支持,包括 Feign 註解和 JAX-RS 註解
- 支持可插拔的 HTTP 編碼器和解碼器
- 支持 Hystrix 和它的 Fallback
- 支持 Ribbon 的負載均衡
- 支持 HTTP 請求和響應的壓縮
使用Feign消費服務(基於之前Eureka的服務註冊中心):
1.創建服務,添加依賴和配置文件
主要依賴:client,web和openfeign
添加配置文件(端口7005,服務名:service-feign):
2.註解開啓Feign的功能
主要註解@EnableFeignClients開啓Feign的功能。
3.啓動並測試
添加一個接口,@FeignClient表示要調用的服務(eureka-producer)
添加controller調用service接口
啓動服務並訪問(http:localhost/7005/helloFeign?name=feign):
可以看到服務註冊中心的服務:
多次刷新瀏覽器訪問,可以看到後臺控制檯打印記錄,輪詢訪問端口7001和7002的服務,
也達到了遠程服務調用和負載均衡的效果(同restTemplate+Ribbon的效果)
源碼地址:https://github.com/wxkhz/springcloud