本文主要是介绍Hystrix-响应式编程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
execute()、queue()也都使用了RxJava来实现,并且queue()是通过toObservable()来获得一个Cold Observable,并且通过toBlocking()将该Observable转换成BlockingObservable,它可以把数据以阻塞的方式发出来,而toFuture方法则是把BlockingObservable转换成一个Future,该方法只是创建一个Future返回,并不会阻塞,这使得消费者可以自己决定如何处理异步操作。
Observable<User> co = new UserCommand(HystrixCommand.Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("")), new RestTemplate(), 0L).toObservable(); BlockingObservable<User> blockingObservable = co.toBlocking(); Future<User> future = blockingObservable.toFuture(); User user = future.get();//注意捕获异常
1、observe()和toObservable()虽然都返回了Observable对象,但是observe()返回的是Hot Observable,
所以我们用ho作为引用名,该命令会在observe()调用的时候立即执行,当Observable每次被订阅的时候会重放他的行为;
2、toObservable()返回的是Cold Observable,我们用co作为引用名,toObservable()执行之后,命令不会被立即执行,只有当所有订阅者都订阅它之后才会执行。
1.observe命令在调用的时候会立即返回一个Observable。
2.toObservable则不会立即返回一个Observable,订阅者调用数据的时候才会执行。
@HystrixCommand(observableExecutionMode = ObservableExecutionMode.EAGER)表示使用observe模式来执行
@HystrixCommand(observableExecutionMode = ObservableExecutionMode.LAZY)表示使用toObservable模式来执行
这篇关于Hystrix-响应式编程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!