Reaktive Architekturen mit RxJava

Anwendungen auf Basis von reaktiven Architekturen ermöglichen auch unter höchster Last eine hohe Performance, Verfügbarkeit und Fehlertoleranz. Dies erfordert jedoch neue Ansätze, die über eine klassische thread-basierte Request-Verarbeitung und blockierende Aufrufe hinausgehen. Daher basieren Reaktive Architekturen auf einem nicht-blockierenden, asynchronen Nachrichtenaustausch.

Die Grundlage für eine asynchrone Nachrichtenverarbeitung bildet die reaktive Programmierung auf Basis funktionaler Verarbeitungsketten. Somit stellt sich auch die Frage nach einem geeigneten Programmiermodell. Java bietet unterschiedliche Optionen für eine asynchrone Datenverarbeitung - beispielsweise Callbacks mit Java-8-Lamdas, Futures oder Completable Futures. Allerdings ermöglichen diese Optionen keine Verarbeitung von Eventfolgen, sind blockierend oder führen zu verschachtelten und schlecht wartbaren Code.

RxJava bietet hier eine elegante Möglichkeit zur Eventverarbeitung auf Basis des Observer-Patterns. Im Gegensatz zu Callback-basierten Schnittstellen, lassen sich mit Observables funktionale Verarbeitungsketten definieren und schlecht lesbare Schachtellungen im Code wirksam vermeiden.

In dieser Blog-Serie werden die Grundlagen, Konzepte und Anwendungsszenarien von reaktiven System und die Umsetzung mit RxJava in vier Teilen vorgestellt:

Teil 1: Grundlagen reaktiver Systeme

Teil 2: Programmiermodelle zur asynchronen Datenverarbeitung

Teil 3: Einführung in RxJava