Я пытаюсь понять разницу между HystrixCommand и HystrixObservableCommand. Причина, по которой я запутался, - это метод HysterixCommand, также имеющий метод observ() или toObservable(), который испускает горячий и холодный наблюдаемые соответственно. Итак, в чем была необходимость создания HystrixObservableCommand. Если я буду работать полностью на неблокирующих вызовах, которые я должен использовать? Зачем?Разница между HystrixCommand и HystrixObservableCommand
ответ
Из Javadocs:
Эта команда по существу блокирует команду, но обеспечивает Observable фасад, если используется с наблюдать()
Эта команда должна использоваться для чистки y неблокирующий шаблон вызова. Вызывающий этой команды будет подписан на Observable, возвращаемый методом run().
Разница заключается в том, что HystrixCommand по умолчанию поддерживает парадигму блокировки, но и обеспечивает нелипкое поведение путем наблюдаемых с помощью фасада, тогда как HystrixObservableCommand был реализован специально для неблокирующей установки. Я не совсем уверен, почему он разделен на две реализации, но я бы предположил, что причина в том, что изначально HystrixCommand не поддерживал неблокирование. Было добавлено около a year or so after the original implementation. Могло быть просто чище, чтобы написать чисто неблокирующий класс hystrix.
Если вы работаете только с неблокирующими вызовами, скорее всего, вы должны использовать HystrixObservableCommand. Бен Кристенсен, один из дэвов Hystrix, суммирует это красиво в this post:
Однако, если вы оберточной блокирующие вызовы, вы должны просто придерживаться с помощью HystrixCommand, как это то, что он построен для и он по умолчанию бега все в отдельном потоке. Используя , HystrixCommand.observe() предоставит вам подходящую, асинхронную композицию, которую вы ищете.
HystrixObservableCommand предназначен для обертывания вокруг асинхронных, неблокирующих наблюдений, которые не нуждаются в дополнительных потоках.
В дополнении к ответу Ник DeFazio, реализация HystrixObservableCommand
обертывания наблюдаемых характеристик, которые могут испускать несколько элементов, в то время как HystrixCommand
, никогда не будет излучать больше, чем один пункт, даже при вызове observe()
или .toObservable()
которые только оберточной сингл значение, перенастроенное методом run()
.
- 1. Netflix Hystrix - HystrixObservableCommand асинхронный запуск
- 2. javanica @HystrixCommand и spring @Cacheable порядок выполнения
- 3. Разница между композитором.phar между | и ||
- 4. hystrixCommand аннотации - что цель commandKey
- 5. Обозначение HystrixCommand, вызывающее прерывание ControllerLinkBuilder
- 6. Spring HttpServletRequest недоступны в HystrixCommand
- 7. Разница между ~/и ../
- 8. разница между $ и $$
- 9. разница между & и * Декларация
- 10. Разница между% и/
- 11. Разница между jquery и $
- 12. разница между -> и ::
- 13. Разница между. и ==
- 14. разница между Scala «+:» и «::»
- 15. Grails: Разница между \ $ {} и $ {}
- 16. Разница между! и ~
- 17. разница между (*) [] и * [] декларации
- 18. Разница между == и .equals()?
- 19. Разница между fmod и%
- 20. Разница между === и ==
- 21. Разница между комментариями/* */и/** * /?
- 22. Разница между ./ и ~/
- 23. Разница между: = и not (=)
- 24. разница между «/» и Слим
- 25. разница между 'есть' и '=='
- 26. Разница между «источником» и «.»
- 27. разница между `% в%` и `` ==
- 28. OCaml разница между :: и @
- 29. разница между $ @ и $ *
- 30. разница между! = И! ==