原文:http://www.javashuo.com/article/p-dquylkqj-kg.htmlhtml
參考 SpringCloud2.0 Feign 服務發現 基礎教程(五)spring
調用 5260一、52603 服務是正常的,可是調用52602服務的時候,出現了阻塞等待,並最終返回了紅框內的錯誤信息。瀏覽器
假如這是正式的生產環境,訪問量很大的狀況下,那麼就會有不少請求阻塞。這會形成【服務消費者】服務器內存消耗陡增,致使應用崩潰。若是有其餘應用須要【服務消費者】返回資源信息,那麼調用【服務消費者】的應用也會出現阻塞。這就致使了連鎖反應,也就是所謂的雪崩。服務器
因此,爲了不這種悲劇發生。順應而生的出現了熔斷保護機制。即:訪問不通時,要及時做出響應,而不是等待至超時。網絡
1
2
3
4
|
<
dependency
>
<
groupId
>org.springframework.cloud</
groupId
>
<
artifactId
>spring-cloud-starter-netflix-hystrix</
artifactId
>
</
dependency
>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
package
com.miniooc.eurekafeign;
import
org.springframework.boot.SpringApplication;
import
org.springframework.boot.autoconfigure.SpringBootApplication;
import
org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import
org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import
org.springframework.cloud.netflix.hystrix.EnableHystrix;
import
org.springframework.cloud.openfeign.EnableFeignClients;
/**
* EurekaFeignApplication
* 應用程序啓動類,程序入口
*
* @author 宋陸
* @version 1.0.0
*/
@EnableHystrix
// Feign默認是開啓,這個註解能夠不加的
@EnableDiscoveryClient
// 啓用 Eureka 服務發現
@EnableFeignClients
// 啓用 Feign
@SpringBootApplication
public
class
EurekaFeignApplication {
public
static
void
main(String[] args) {
SpringApplication.run(EurekaFeignApplication.
class
, args);
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
package
com.miniooc.eurekafeign.service;
import
org.springframework.cloud.openfeign.FeignClient;
import
org.springframework.stereotype.Service;
import
org.springframework.web.bind.annotation.RequestMapping;
/**
* EurekaFeignService
* 服務消費者,調用服務提供者提供的服務,實現業務
*
* @author 宋陸
* @version 1.0.0
*/
@FeignClient
(value =
"EUREKA-CLIENT"
, fallback = EurekaFeignServiceFailure.
class
)
// 調用的服務的名稱
public
interface
EurekaFeignService {
@RequestMapping
(value =
"/info"
)
String getInfo();
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
package
com.miniooc.eurekafeign.service;
import
org.springframework.stereotype.Service;
/**
* EurekaFeignServiceFailure
* 服務消費者,調用服務提供者提供的服務失敗,回調處理類
*
* @author 宋陸
* @version 1.0.0
*/
@Service
public
class
EurekaFeignServiceFailure
implements
EurekaFeignService {
@Override
public
String getInfo() {
String message =
"網絡繁忙,請稍後再試-_-。PS:服務消費者本身提供的信息"
;
return
message;
}
}
|
1
2
3
|
feign:
hystrix:
enabled:
true
|
調用 5260一、52603 服務是正常的,調用52602服務的時候,沒有出現阻塞等待,而是返回了【服務消費者】本身提供的返回信息app
【服務消費者】加入熔斷機制結束ide