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包才可以。
如果已經有前面幾章跟著環境一起做大概就會有
等等我們會來用 Feign 完成一次服務調用範例
application.yml
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
spring:
application:
name: feign-consumer
server:
port: 9000
@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 () 的方法
@FeignClient("eureka-provider")
public interface HomeClient {
@GetMapping("/")
String consumer();
}
讓訪問 Fegin "/home" ,能導向我們剛剛寫的接口homeClient裡面的 consumer 方法
@RestController
public class ConsumerController {
@Autowired
private HomeClient homeClient;
@GetMapping(value = "/hello")
public String hello() {
return homeClient.consumer();
}
}
下面一章就會寫
如何調用service 傳參數,本來打算在這一章解決的,後來發現也算是一個坑,我把這一篇讀ㄌㄧ
兩種調用方式
如何加裝我們的Hystrix 斷路器。
or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing