这一节我们开始了解hystrix执行的主流程,在讲解主流程之前,我们先来看一下怎么使用hystrix。
引入jar
<dependency> <groupId>com.netflix.hystrix</groupId> <artifactId>hystrix-core</artifactId> <version>1.5.10</version> </dependency>
继承HystrixCommand
public HelloWorldHystrixCommand() { super(HystrixCommandGroupKey.Factory.asKey("ExampleGroup")); } @Override protected String run() { return "Hello "; } @Override protected String getFallback() { return "Hello Fallback"; } }
run为需要执行的命令,在执行过程中的发送异常,则会触发getFallback来达到优雅降级的目的。 出于对报告和提醒的目的,group这个键用于对命令进行分组。
调用Hystrix命令
有四种方法执行命令:
String s = new CommandHelloWorld("Bob").execute(); Future<String> s = new CommandHelloWorld("Bob").queue(); Observable<String> s = new CommandHelloWorld("Bob").observe();
Observable<String> s = new CommandHelloWorld("Bob").toObserve();
- execute-同步执行,等待返回结果
- queue-异步执行,获得一个Future,通过Future获取结果.
- observe-异步执行,获得一个Observable,通过Observable获取结果。
- toObservable-异步执行,获得一个Observable,通过Observable获取结果,与observe不同的时,该Observable在第一次监听执行,后面的监听者将接收不到之前发生的消息,而observe方法获取的Observable,在方法调用时执行,后面的监听者可以接收到之前发生的消息。
当调用这四个方法时,最终会执行run方法,并返回执行的结果,如果在执行过程中发生异常就会调用fallback方法,返回结果。