Java 9: Ein erster Blick

Processor

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Mit der Abstraktion des Processor können Objekte verändert werden. Erfahren Sie in diesem Video, was genau sich dahinter verbirgt.

Transkript

Auf Basis des Flow-Modells werden innerhalb vom JDK Reactive-Streams durch Subscriber, Publisher und Subscription beschrieben. Zusätzlich gibt es noch den sogenannten Processor. In diesem Video zeige ich Ihnen nun, wie man einen solchen Processor definiert. Aktuell wird innerhalb meiner Anwendung ein sogenannter LogPublisher erstellt. Dieser nimmt Nachrichten entgegen, die ich ihm sende. Beispielsweise über den Aufruf "LogPublisher.submit", "Text". Dieser wird dann auf die Konsole ausgegeben. Ich möchte nun aber, dass mein LogPublisher automatisch einen Zeitstempel hinzufügt. Dafür benötige ich nun einen Processor als Zwischenstation. Zunächt einmal lege ich zu diesem Zweck eine Klasse an mit der Bezeichnung "Log.Processor". Bei einem Processor handelt es sich gleichzeitig um einen Subscriber und einen Publisher. Daher erweitere ich den SubmissionPublisher vom Typ String und implementiere das Interface "Flow.Processor". In dem Fall muss ich nun zwei Typen angeben. Den Eingangstyp und den Ausgangstyp. In meinem Fall also "String" und "String". Außerdem implementiert meine Klasse noch "Flow.Subscriber()" für String-Daten. Als Nächstes muss ich nun die Methoden implementieren, die aus dem Subscriber entstammen. Ähnlich wie bei einem normalen Subscriber nutze ich also nun die "subscription" um eine Menge von Daten abzufragen. In meinem Fall die maximale Menge. Als Nächstes behandle ich nun den Wert, der an diesen Subscribe geschickt wird. in dem Fall also der Text. In dem Fall sende ich diesen Text dann wiederum an meine eigene Implementierung des SubmissionPublisher. Dafür verwende ich also "this.submit()". Ich füge zusätzlich das aktuelle Datum hinzu. Das mache ich über "new Date()" aus java.util und "toString()", konkateniert mit eckigen Klammern und dem ursprünglichen Element, "item". Insofern mir nun der Publisher der Informationen an meinen Processor schickt, signalisiert, dass das Ganze vollständig ist, sollte ich auch meinen Publisher schließen. Dafür verwende ich also "this.close()". Außerdem sollte ich, falls ein Fehler auftritt, alle Fehler auch an alle Subscriber signalisieren. Dasfür benötige ich aber zusätzliche Threads. Ich verwende also einen Thread auf dem Executor, der mir zur Verfügung steht, mit einem Lambda-Ausdruck, bei dem ich nun an alle Subscriber dieses "throwable" weiterleite. Und schon ist mein Processor nun vollständig. Ich erzeuge also eine Instanz des LogProcessor und muss nun die Daten des Publisher an den Processor weiterleiten. Das heißt also, ich verwende den Publisher über ".subscribe" und der Subscribe ist in dem Fall nun der "logProcessor". Statt nun die "consume()"-Methode auf dem LogPublisher anzuwenden verwende ich stattdessen nun den "logProcessor". Und somit bekomme ich nun Zeitstempel, die also von meinem LogProcessor vorprozessiert werden. Es ist also ziemlich einfach, seine eigene Processor-Implementierung zu schreiben. Ein Processor ist im Großen und Ganzen sowohl ein Subscriber, als auch ein Publisher. Das heißt also, im JDK wird da implementiert auf Basis des SubmissionPublisher. Innerhalb des Aufrufes onNext() kann ich ein Mapping, beziehungsweise Umwandeln eines Eingangsformat in ein Ausgangsformat vornehmen. Typischerweise gibt es sehr viele interessante Implementierungen für einen solchen Processor. Leider bringt das Java Development Kit keine eigenen Implementierungen für einen Processor mit, so dass man eigentlich alle eigenen Implementierungen schreiben muss. Ich gehe aber davon aus, dass es in Zukunft einige Bibliotheken gibt, die das Ganze erleichtern werden.

Java 9: Ein erster Blick

Entdecken Sie die Highlights der aktuellen Java-Version.

2 Std. 14 min (21 Videos)
Derzeit sind keine Feedbacks vorhanden...
Hersteller:
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:22.08.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!