Hystrix命令执行

命令执行
toObservable:同样会返回Observable对象,也代表了操作的多个结果,但他返回的是一个ColdObservable.
observer:返回Observable对象,他代表了操作的多个结果,他是一个HotObservable.
queue:异步执行,直接返回一个Future对象,其中包含了服务执行结束时要返回的单一结果对象。
execute:同步执行,从依赖的服务返回一个单一的结果对象,或是在发生错误的时候跑出异常。
Observable用来向订阅者Subscriber对象发布事件,Subscriber对象则在接收到事件后对其进行处理,而在这里所指的事件通常就是对依赖服务的调用。
一个Observable可以发出多个事件,直到结束或是发生异常
Observable对象每发出一个事件,就会调用对应观察者Subscriber对象的onNext()方法
每一个Observable的执行,最后一定会通过Subscriber.onCompleted()或者Subscriber.onError()来结束改事件的操作流。
Hot Observable的每一个“订阅者”都有可能是从“事件源”的中途开始的,并可能只是看到了整个操作的局部过程。而Cold Observable在没有“订阅者”的时候并不会发布事件,而是进行等待,直到有“订阅者”之后才发布事件,所以对Cold Observable的订阅者,他可以保证从一开始看到整个操作的全部过程。

public class CommandRunMain {

	public static void main(String[] args) throws InterruptedException {
		RunCommand c1=new RunCommand("observer method");
		c1.observe();
		RunCommand c2=new RunCommand("toObservable method");
		Observable ob=c2.toObservable();
		ob.subscribe(new Observer<String>(){

			public void onCompleted() {
				System.out.println("command completed");
			}

			public void onError(Throwable arg0) {
				
			}

			public void onNext(String t) {
				System.out.println("*****"+t);
			}
			
		});
		Thread.sleep(1000);
	}
	static class RunCommand extends HystrixCommand<String>{
		String msg;
		public RunCommand(String msg){
			super(HystrixCommandGroupKey.Factory.asKey("TestGroup"));
			this.msg=msg;
		}
		protected String run(){
			System.out.println(msg);
			return "success";
		}
	}
}
发布了254 篇原创文章 · 获赞 18 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/qq_36594703/article/details/82705057