Hystrix 旨在通過控制那些通路遠端系統、服務和第三方庫的節點,進而對延遲和故障提供更強大的容錯能力。Hystrix具備擁有回退機制和斷路器功能的線程和信号隔離,請求緩存和請求打包,以及監控和配置等功能
直接上步驟:
1 生産者和消費者都導入依賴:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
<version>1.4.4.RELEASE</version>
</dependency>
2 生産者和消費者的Application類上開啟@EnableHystrix
@SpringBootApplication
@EnableHystrix
public class ProviderApplication {
}
3、配置Provider端
在Dubbo的Provider上增加@HystrixCommand配置,這樣子調用就會經過Hystrix代理。
@Service(version = "1.0.0")
public class HelloServiceImpl implements HelloService {
@HystrixCommand()
@Override
public String sayHello(String name) {
// System.out.println("async provider received: " + name);
// return "annotation: hello, " + name;
throw new RuntimeException("Exception to show hystrix enabled.");
}
}
那如果此時在調用生産的時候報錯了怎辦呢。不用擔心,因為如果有報錯,會在消費者端顯現出來,為此我們隻需要解決消費端就可以了。
4、配置Consumer端
對于Consumer端,我們有個一個doSayHello方法調用生産者,為此我們在doSayHello方法上配置@HystrixCommand。當調用出錯時,會走到fallbackMethod = "reliable"的調用裡。
@Reference(version = "1.0.0")
private HelloService demoService;
@HystrixCommand(fallbackMethod = "reliable")
public String doSayHello(String name) {
return demoService.sayHello(name);
}
public String reliable(String name) {
return "hystrix fallback value";
}
好了,到此就完成了。