Sto cercando di capire la differenza tra HystrixCommand e HystrixObservableCommand. La ragione per cui sono confuso è che HysterixCommand ha anche un metodo observ() o toObservable() che emette rispettivamente osservatori caldi e freddi. Quindi, qual è stata la necessità di creare HystrixObservableCommand. Se lavorerò completamente su chiamate non bloccanti quale dovrei usare? perché?Differenza tra HystrixCommand e HystrixObservableCommand
risposta
Dalle Javadocs:
Questo comando è essenzialmente un comando di blocco ma fornisce una facciata osservabile se utilizzato con osservare()
Questo comando dovrebbe essere usato per un purel y modello di chiamata non bloccante. Il chiamante di questo comando sarà abbonato all'Osservable restituito dal metodo run().
La differenza è che HystrixCommand di default supporta un paradigma di blocco, ma fornisce anche un comportamento non-blocking in via di osservabili tramite una facciata, mentre HystrixObservableCommand è stata implementata specificamente per una configurazione non-blocking. Non sono del tutto sicuro del motivo per cui è diviso in due implementazioni, ma suppongo che il motivo sia dovuto al fatto che in origine HystrixCommand non supportava il blocco. E 'stato aggiunto circa a year or so after the original implementation. Potrebbe essere stato semplicemente più pulito scrivere una classe hystrix puramente non bloccante.
Se si utilizzano solo chiamate non bloccanti, è probabile che si utilizzi HystrixObservableCommand. Ben Christensen, uno degli sviluppatori Hystrix, riassume bene in this post:
Tuttavia, se si sta avvolgendo le chiamate di blocco, si dovrebbe solo bastone con l'utilizzo di HystrixCommand come questo è ciò che è costruito e IT default in esecuzione tutto in un thread separato. Usando HystrixCommand.observe() ti darà la composizione simultanea, asincrona che stai cercando.
HystrixObservableCommand è progettato per il wrapping async, Observable non bloccanti che non richiedono thread aggiuntivi.
In aggiunta alla risposta di Nick Defazio, un'implementazione di HystrixObservableCommand
osservabili avvolgere in grado di emettere più elementi, mentre HystrixCommand
, non potrà mai emettere più di una voce, anche quando si richiama observe()
o .toObservable()
che sono solo avvolgendo il singolo valore riaccordato con il metodo run()
.
- 1. La differenza tra $ * e $ @
- 2. Differenza tra $ # e $ {# @}
- 3. Differenza tra. e #
- 4. MySQL: Differenza tra ",", "e"
- 5. Differenza tra "o" e "||"
- 6. Differenza tra unwrapObservable e()
- 7. Differenza tra oggetto e *?
- 8. Differenza tra "**/* /" e "** /"?
- 9. Differenza tra jquery e $
- 10. CMake: differenza tra $ {} e "$ {}"
- 11. Differenza tra ". +" E ". +?"
- 12. VBA: Differenza tra & e +
- 13. Differenza tra numpy.logical_and e &
- 14. Differenza tra | = e^= css
- 15. Differenza tra `% in%` e `` ==
- 16. Differenza tra Dizionario e Hashtable
- 17. Differenza tra SCM e SVN
- 18. differenza tra RDLC e SSRS
- 19. Differenza tra REMOTE_HOST e REMOTE_ADDR
- 20. Differenza tra "\ n" e Environment.NewLine
- 21. Differenza tra QSharedPointer e QSharedDataPointer?
- 22. Differenza tra toFixed() e toPrecision()?
- 23. Differenza tra strncpy e memcpy?
- 24. Differenza tra crittografia e hashing
- 25. Differenza tra Assembly.CreateInstance e Activator.CreateInstance?
- 26. Differenza tra coredata e sqlite
- 27. Differenza tra Html.RenderAction e Html.Action
- 28. differenza tra System.out.printf e String.format
- 29. Differenza tra UIViewContentModeScaleAspectFit e UIViewContentModeScaleToFill?
- 30. Differenza tra MDB e JMS