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包才可以。
支持可插拔的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
- Eureka Provider *2
- Ribbon Consumer
等等我們會來用 Feign 完成一次服務調用範例
配置設定
application.yml
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
spring:
application:
name: feign-consumer
server:
port: 9000
Feign Consumer
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class EurekaServiceFeignConsumer {
public static void main(String[] args) {
SpringApplication.run(EurekaServiceFeignConsumer.class, args);
}
}
定義接口
HomeClient.class
這邊就是調用 eureka-provider 裡的 /,
也就是從我們的Eureka 裡面已經註冊過的service
Provider *2 裡面 home () 的方法
這邊就是調用 eureka-provider 裡的 /,
也就是從我們的Eureka 裡面已經註冊過的service
Provider *2 裡面 home () 的方法
@FeignClient("eureka-provider")
public interface HomeClient {
@GetMapping("/")
String consumer();
}
Controller
讓訪問 Fegin “/home” ,能導向我們剛剛寫的接口homeClient裡面的 consumer 方法
@RestController
public class ConsumerController {
@Autowired
private HomeClient homeClient;
@GetMapping(value = "/hello")
public String hello() {
return homeClient.consumer();
}
}
服務啟動
下面一章就會寫
如何調用service 傳參數,本來打算在這一章解決的,後來發現也算是一個坑,我把這一篇獨立出來。
如何調用service 傳參數,本來打算在這一章解決的,後來發現也算是一個坑,我把這一篇獨立出來。