Hystrix的四种调用方法

Hystrix的四种调用方法有何异同?
众所周知,Hystrix一共提供了4种调用方法供以使用:

toObservable() :未做订阅,只是返回一个Observable
observe():调用 #toObservable() 方法,并向 Observable 注册,rx.subjects.ReplaySubject发起订阅,因此它具有回放的能力
observe() 方法使用了ReplaySubject缓存了toObservable的消息,使得执行后再监听也可以收到所有消息。新订阅者连历史数据也能够监听到(1分钟内)
queue():调用toObservable().toBlocking().toFuture()返回 Future 对象
execute():调用#queue() 方法的基础上,马上调用 Future#get() 方法,同步返回 #run() 的执行结果。

observe() vs toObservable()
四种调用方法中,最难区分的当属observe() 和oObservable()了,这里做进一步的解释说明和对比。

observe()和toObservable()虽然都返回了Observable对象,但是observe()返回的是Hot Observable,该命令会在observe()调用的时候立即执行,当Observable每次被订阅的时候会重放他的行为;
而toObservable()返回的是Cold Observable,toObservable()执行之后,命令不会被立即执行,只有当所有订阅者都订阅它之后才会执行。

execute()、queue()也都使用了RxJava来实现,并且queue()是通过toObservable()来获得一个Cold Observable(不会立马执行),并且通过toBlocking()将该Observable转换成BlockingObservable,它可以把数据以阻塞的方式发出来,而toFuture方法则是把BlockingObservable转换成一个Future,该方法只是创建一个Future返回,并不会阻塞,这使得消费者可以自己决定如何处理异步操作。

说明:Future实例出来后,目标方法是立马执行的,只是它不会阻塞主线程,并且执行结果你可以在其它地方get获取(若还没执行完成时去get,会阻碍)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值