天天看點

【dubbo】dubbo與Hystrix的整合1 生産者和消費者都導入依賴:2 生産者和消費者的Application類上開啟@EnableHystrix3、配置Provider端4、配置Consumer端

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";
    }

           

好了,到此就完成了。

繼續閱讀