Kapitel 6. Durchflusskontrolle und Gegendruck
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Bisher haben wir uns mit der Push-basierten Natur von RxJava vertraut gemacht. Ereignisse werden irgendwo oben im Stream erzeugt, um später von allen Abonnenten konsumiert zu werden. Wir haben nie wirklich darauf geachtet, was passiert, wenn Observer
langsam ist und nicht mit den Ereignissen mithalten kann, die von Observable.create()
ausgesendet werden. Dieses ganze Kapitel ist diesem Problem gewidmet.
RxJava hat zwei Möglichkeiten, damit umzugehen, wenn die Produzenten aktiver sind als die Abonnenten:
-
Verschiedene Mechanismen zur Flusskontrolle wie Sampling und Batching werden über integrierte Operatoren implementiert
-
Die Abonnenten können ihre Nachfrage weitergeben und nur so viele Artikel anfordern, wie sie verarbeiten können, indem sie einen Rückkopplungskanal nutzen, der als Backpressure bezeichnet wird.
Diese beiden Mechanismen werden in diesem Kapitel beschrieben.
Flusskontrolle
Bevor RxJava mit der Implementierung von Backpressure (siehe Abschnitt "Backpressure") begann, war es schwierig, mit Produzenten (Observable
s) umzugehen, die die Konsumenten (Observer
s) übertreffen. Es gibt eine ganze Reihe von Operatoren, die erfunden wurden, um mit Produzenten umzugehen, die zu viele Ereignisse pushen, und die meisten von ihnen sind für sich genommen recht interessant. Einige ...
Get Reaktive Programmierung mit RxJava now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.