Observable vs Flowable rxJava2
He estado mirando el nuevo rx java 2 y no estoy muy seguro de entender la idea debackpressure
nunca más...
Soy consciente de que tenemosObservable
eso no tienebackpressure
apoyo yFlowable
eso lo tiene
Entonces, según el ejemplo, digamos que tengoflowable
coninterval
:
Flowable.interval(1, TimeUnit.MILLISECONDS, Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<Long>() {
@Override
public void accept(Long aLong) throws Exception {
// do smth
}
});
Esto se bloqueará después de alrededor de 128 valores, y eso es bastante obvio que estoy consumiendo más lento que obtener elementos.
Pero entonces tenemos lo mismo conObservable
Observable.interval(1, TimeUnit.MILLISECONDS, Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<Long>() {
@Override
public void accept(Long aLong) throws Exception {
// do smth
}
});
Esto no se bloqueará en absoluto, incluso cuando me demore un poco en consumirlo, aún funciona. Para hacerFlowable
el trabajo digamos que puseonBackpressureDrop
operador, el bloqueo se ha ido pero tampoco se emiten todos los valores.
Entonces, la pregunta básica que no puedo encontrar actualmente en mi cabeza es por qué debería importarmebackpressure
cuando puedo usar simpleObservable
aún recibe todos los valores sin administrar elbuffer
? O tal vez desde el otro lado, ¿qué ventajas tienebackpressure
darme a favor de gestionar y manejar el consumo?