Mit ein paar Zeilen Code können Sie Vert.X-Streams mit einer beliebigen Reactive Streams-Implementierung verarbeiten und dabei den Gegendruck beibehalten. Die Reactive Streams-Helfer können Vert.X-Streams in die Publisher und Subscriber von Reactive Streams konvertieren. Die API ist anfangs etwas verwirrend, dieser Artikel wird sie aufklären.
ReadStreams in einen ReactiveWriteStream schreiben und mit Hilfe von Reactive Streams aus ihm lesen, da er die Schnittstelle Publisher implementiert. Der ReactiveReadStream ist ein Vert.X ReadStream, der die Subscriber-Schnittstelle implementiert. Die Benennung dieser Helfer macht von der Vert.X-Seite her Sinn, aber von der Reactive Streams-Seite aus lesen Sie von einem WriteStream und schreiben in einen ReadStream . Das folgende Diagramm macht es vielleicht klarer.[caption width="1440" align="aligncenter"]
Ereignisse aus einem Vert.X ReadStream werden durch Reactor zu einem Vert.X WritStream geleitetMit[/caption]diesem Wissen können Sie Ihre eigenen Reactive Streams Helfer erstellen. Das folgende Beispiel ermöglicht die Verarbeitung von Vert.X Streams, indem es diese durch Reactor leitet. Die Verarbeitung selbst findet in der Prozessorfunktion statt. Ein Flux der Eingabe wird als Parameter übergeben und ein Flux der Ausgabe wird zurückgegeben.
[gist id="091849b8bb8d935d7343416f52d72a3e"]
Warum nicht RxJava verwenden?
Es gibt eine eingebaute Unterstützung für RxJava, die die Vert.X-Kern-API erweitern kann. Die RxJava-Helfer konvertieren Vert.X-Streams in RxJava observable. Vielleicht möchten Sie Reactor verwenden, weil es von Pivotal entwickelt wurde, oder Sie bevorzugen die Akka Streams API. Sehen Sie sich diesen Vergleich zwischen Reactor und Rxjava oder diesen Vergleich zwischen Reactor und Akka Streams an. Aber selbst wenn Sie sich für RxJava entscheiden, ist es gut zu wissen, dass Vert.X mit jeder Reactive Streams-Implementierung kompatibel ist.So verwenden Sie die Reactive Streams-Hilfsmittel
Vert.X bietet einen ReactiveWriteStream und einen ReactiveReadStream. Sie können als Pipes für die Konvertierung zwischen der Welt der Reactive Streams und der Vert.X Streams betrachtet werden. Sie können mit Hilfe eines Vert.X
Ereignisse aus einem Vert.X ReadStream werden durch Reactor zu einem Vert.X WritStream geleitetMit[/caption]diesem Wissen können Sie Ihre eigenen Reactive Streams Helfer erstellen. Das folgende Beispiel ermöglicht die Verarbeitung von Vert.X Streams, indem es diese durch Reactor leitet. Die Verarbeitung selbst findet in der Prozessorfunktion statt. Ein Flux der Eingabe wird als Parameter übergeben und ein Flux der Ausgabe wird zurückgegeben.
[gist id="091849b8bb8d935d7343416f52d72a3e"]
Nächste Schritte
Wenn Sie noch einen Schritt weiter gehen und die Vert.X Core APIs mit einer anderen Reactive Streams-Implementierung erweitern möchten, können Sie sich ansehen, wie die Vert.X-Implementierung für RxJava funktioniert. Die meisten der Erweiterungsmethoden werden automatisch generiert. Es ist gut, dass die RxJava-Erweiterungsmethoden nicht in den Vert.X-Kern eingebettet sind. Das macht mich zuversichtlich, dass Sie es mit RxJava-Alternativen zum Laufen bringen können.Einpacken
Die Interoperabilität, die sich aus der Reactive Streams-Spezifikation ergibt, stellt sicher, dass Sie Implementierungen mischen und anpassen können. Auch wenn Sie noch nicht umsteigen, ist es gut zu wissen, dass dies in Zukunft möglich sein wird.Verfasst von
Ruben Oostinga
Contact
Let’s discuss how we can support your journey.