Eu estive olhando para o novo rx java 2 e não tenho muita certeza de entender a idéia de backpressuremais ...
Estou ciente de que temos Observableque não tem backpressuresuporte eFlowable tem.
Assim, com base no exemplo, digamos que eu tenho flowablecom 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
}
});
Isso vai falhar após cerca de 128 valores, e isso é bastante óbvio que estou consumindo mais devagar do que recebendo itens.
Mas então nós temos o mesmo com 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
}
});
Isso não trava, mesmo quando eu coloco algum atraso no consumo, ainda funciona. Para fazer o Flowabletrabalho, digamos que eu coloque o onBackpressureDropoperador, a falha desapareceu, mas nem todos os valores são emitidos.
Portanto, a pergunta básica que não consigo encontrar resposta atualmente em minha cabeça é por que devo me preocupar backpressurequando posso usar o plain Observableainda receber todos os valores sem gerenciar o buffer? Ou talvez do outro lado, quais vantagens backpressureme dão em favor do gerenciamento e manuseio do consumidor?

