He estado mirando nuevo rx java 2 y no estoy muy seguro de entender la idea de backpressuremás ...
Soy consciente de que tenemos Observableque no tiene backpressureapoyo y Flowableque lo tiene.
Entonces, basado en el ejemplo, digamos que tengo flowablecon interval:
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 va a fallar después de alrededor de 128 valores, y eso es bastante obvio que estoy consumiendo más lento que obteniendo elementos.
Pero luego tenemos lo mismo con Observable
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 demore un poco el consumo, todavía funciona. Para que Flowablefuncione, digamos que puse onBackpressureDropoperador, el bloqueo se ha ido, pero tampoco se emiten todos los valores.
Entonces, la pregunta base que no puedo encontrar respuesta actualmente en mi cabeza es ¿por qué debería preocuparme backpressurecuando puedo usar simple Observabletodavía recibir todos los valores sin administrar el buffer? O tal vez desde el otro lado, ¿qué ventajas me backpressureda a favor de gestionar y manejar el consumo?

