rxjava programming example curso java rx-java

programming - ¿Cuál es la diferencia entre Observable y Flowable en RxJava 2.0?



rxjava maven (1)

Las interfaces observables y fluidas parecen ser idénticas. ¿Por qué se introdujo Flowable en RxJava 2.0? ¿Cuándo debería preferir usar Flowable sobre Observable?


Como se indica en la documentación :

Un pequeño lamento de la introducción de la contrapresión en RxJava 0.x es que, en lugar de tener una clase reactiva de base separada, el Observable en sí fue modificado. El problema principal con la contrapresión es que muchas fuentes importantes, como los eventos de la interfaz de usuario, no pueden tener una contrapresión razonable y causan la MissingBackpressureException inesperada de MissingBackpressureException (es decir, los principiantes no los esperan).

Intentamos remediar esta situación en 2.x haciendo que io.reactivex.Observable no io.reactivex.Observable y el nuevo io.reactivex.Flowable sea ​​la clase reactiva básica habilitada para la contrapresión.

Use Observable cuando tiene relativamente pocos artículos a lo largo del tiempo (<1000) y / o no hay riesgo de que el productor llene en exceso a los consumidores y cause la OOM.

Use Flowable cuando tenga una cantidad relativamente grande de artículos y necesite controlar cuidadosamente cómo se comporta el Producer para evitar el agotamiento de recursos y / o la congestión.

Contrapresión Cuando tiene un observable que emite elementos tan rápido que el consumidor no puede mantenerse al día con el flujo que conduce a la existencia de elementos emitidos pero no consumidos.

La estrategia de contrapresión es la forma en que se manejan y controlan los artículos no consumidos, que son emitidos por observables pero no consumidos por los suscriptores.

Enlace de referencia