Hystrix的四种调⽤⽅法
Hystrix的四种调⽤⽅法有何异同?centaline
众所周知,Hystrix⼀共提供了4种调⽤⽅法供以使⽤:
toObrvable() :未做订阅,只是返回⼀个Obrvable
go round>英文电影推荐obrve():调⽤ #toObrvable() ⽅法,并向 Obrvable 注册,rx.subjects.ReplaySubject发起订阅,因此它具有回放的能⼒obrve() ⽅法使⽤了ReplaySubject缓存了toObrvable的消息,使得执⾏后再监听也可以收到所有消息。新订阅者连历史数据也能够监听到(1分钟内)
queue():调⽤toObrvable().toBlocking().toFuture()返回 Future 对象
execute():调⽤#queue() ⽅法的基础上,马上调⽤ Future#get() ⽅法,同步返回 #run() 的执⾏结果。
2012上海中考obrve() vs toObrvable()队长的英文
四种调⽤⽅法中,最难区分的当属obrve() 和oObrvable()了,这⾥做进⼀步的解释说明和对⽐。
开口说英语obrve()和toObrvable()虽然都返回了Obrvable对象,但是obrve()返回的是Hot Obrvable,该world是什么意思
命令会在obrve()调⽤的时候⽴即执⾏,当Obrvable每次被订阅的时候会重放他的⾏为;
⽽toObrvable()返回的是Cold Obrvable,toObrvable()执⾏之后,命令不会被⽴即执⾏,只有当所有订阅者都订阅它之后才会执⾏。
adjusterexecute()、queue()也都使⽤了RxJava来实现,并且queue()是通过toObrvable()来获得⼀个Cold Obrvable(不会⽴马执⾏),并且通过toBlocking()将该Obrvable转换成BlockingObrvable,它可以把数据以阻塞的⽅式发出来,⽽toFuture⽅法则是把BlockingObrvable转换成⼀个Future,该⽅法只是创建⼀个Future返回,并不会阻塞,这使得消费者可以⾃⼰决定如何处理异步操作。
宾语从句说明:Future实例出来后,⽬标⽅法是⽴马执⾏的,只是它不会阻塞主线程,并且执⾏结果你可以在其它地⽅get获取(若还没执⾏完成时去get,会阻碍)邮购