Junior — Middle
Opíšte situáciu, keď ste sa stretli s mechanizmom backpressure v systéme alebo aplikácii.
sobes.tech AI
Odpoveď od AI
Backpressure — mechanizmus riadenia toku dát, ktorý zabraňuje preťaženiu spotrebiteľa, ak nedokáže spracovať prichádzajúce dáta rovnakou rýchlosťou, akou prichádzajú.
Napríklad v Android s RxJava, ak Observable generuje udalosti rýchlejšie, než ich môže spracovať Subscriber, vzniká backpressure. Bez správneho spracovania to môže viesť k OutOfMemoryError alebo k pádu aplikácie.
Na zvládnutie toho možno použiť operátory RxJava ako onBackpressureBuffer(), onBackpressureDrop() alebo onBackpressureLatest(), ktoré regulujú tok dát, bufferovaním alebo odhadzovaním nadbytočných prvkov.
Príklad:
Observable.interval(1, TimeUnit.MILLISECONDS)
.onBackpressureBuffer() // bufferuje prvky, ak sa ich nedokáže držať
.observeOn(Schedulers.computation())
.subscribe { item ->
Thread.sleep(10) // pomalé spracovanie
println(item)
}
V tomto príklade, bez onBackpressureBuffer(), bude tok príliš rýchly na spracovanie, čo spôsobí chyby.