Yeni rx java 2'ye bakıyordum ve backpressure
artık fikrini anladığımdan pek emin değilim ...
Sahip olduğumuz farkındayım Observable
o yok backpressure
destek ve Flowable
o var.
Örneğin dayalı Yani, söylüyorlar sağlar flowable
ile 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
}
});
Bu yaklaşık 128 değerden sonra çökecek ve bu oldukça açık ki, öğeleri almaktan daha yavaş tüketiyorum.
Ama sonra aynı şeye sahibiz 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
}
});
Bu, tüketmeye biraz gecikme koysam bile hala işe yarıyor. İş yapmak için operatörü Flowable
koyduğumu söyleyelim onBackpressureDrop
, çökme gitti ama tüm değerler de gönderilmiyor.
Yani şu anda kafamda cevabını bulamadığım temel soru, neden backpressure
sade kullanabileceğimi umursamalıyım , Observable
yine de tüm değerleri yönetmeden buffer
? Ya da belki diğer taraftan, backpressure
tüketiciyi yönetme ve idare etme lehine bana ne gibi avantajlar sağlıyor ?