Ich habe mir das neue RX Java 2 angesehen und bin mir nicht ganz sicher, ob ich die Idee von verstehe backpressure mehr ...
Mir ist bewusst, dass wir Observabledas nicht backpressureunterstützen und habenFlowable das hat es.
Nehmen wir also anhand eines Beispiels an, ich habe flowablemit 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
}
});
Dies wird nach ungefähr 128 Werten abstürzen, und das ist ziemlich offensichtlich, dass ich langsamer konsumiere als Gegenstände zu bekommen.
Aber dann haben wir das gleiche mit 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
}
});
Dies wird überhaupt nicht abstürzen, selbst wenn ich den Verbrauch etwas verzögere, funktioniert es immer noch. Um die FlowableArbeit kann sagen , Ich habe onBackpressureDropBediener, crash ist weg , aber nicht alle Werte sind entweder emittiert.
Die Grundfrage, die ich derzeit nicht in meinem Kopf beantworten kann, ist, warum ich mich darum kümmern sollte, backpressurewenn ich einfach verwenden kann und Observabletrotzdem alle Werte erhalte, ohne die zu verwalten buffer. Oder vielleicht von der anderen Seite, welche Vorteile bieten backpressuremir für die Verwaltung und den Umgang mit dem Konsum?

