Enterprise Service Bus

Was ist mit Integration Patterns?

In Bereich der Integration haben sich in den letzten Jahren bewährte Muster durchgesetzt, vor allem was die asynchrone Kommunikation betrifft. Bei der Verwendung eines ESB erfolgt die Kommunikation zwischen den Systemen mithilfe von Nachrichten (Message), welche über eine entsprechende Kommunikationssoftware übermittelt werden. Das Messaging-Konzept ist ein Kernkonzept des ESB und ermöglicht die asynchrone Kommunikation zwischen Applikationen, wodurch diese auch geografisch verteilt sein können.

Die zwei wesentlichsten Elemente in einer MOM sind zum einem die Message, welche das Datenpaket beinhaltet, bestehend aus einem Header, einem Body und wahlweise auch Properties. Diese Message wird über einen Message Channel zu einem oder mehreren Empfängern transportiert. Der Transport dieser Nachricht kann nun auf verschiedene Arten beeinflusst werden, wie beispielsweise durch Routing, einen Filter oder Transformationen. Für jede dieser Arten gibt es unterschiedliche Patterns.

Beginnen wir mit dem Message Router. Eine Message kann aufgrund bestimmter Merkmale (z.B.: Content, Name) zu ihrem Ziel geführt werden. Die zu sendende Anwendung bekommt von diesem Routing nichts mit. Beim Content-Based Routing (Abb. 2) wird die Nachricht aufgrund des Inhalts an bestimmte Empfänger weitergeleitet.

Message-Filter können für die Filterung von Nachrichten verwendet werden. Somit wird sichergestellt, dass ein Empfänger nur jene Nachrichten enthält, die für ihn von Interesse sind.

Gerade beim Content-Based Routing oder beim Message-Filter sind oft nur Teile der Nachricht von Interesse. Es muss also eine Möglichkeit bestehen eine Nachricht in mehrere Teile aufzuteilen und diese Teile später wieder zusammenzuführen. Dies kann mit einem Splitter bzw. einem Aggregator geschehen. Betrachten wir eine Bestellung mit vielen Positionen, welche zusammen in einer Nachricht verpackt sind. Nun gibt es Empfänger, welche an den Kopfdaten der Bestellung interessiert sind und Empfänger, welche nur die Positionen einzeln verarbeiten müssen.

Wie anfangs erwähnt können Nachrichten während ihres Transports auch transformiert werden. In den meisten Anwendungsfällen müssen Transformationen vorgenommen werden, damit die Datenpakete von einer Anwendung verarbeitet werden können. Datenpakete können aber auch mit Informationen angereichert werden, man spricht dabei vom Content Enricher.

Anwendungen verbinden sich über so genannte Endpoints mit dem Messaging-System. Der Endpoint übernimmt dabei das Senden (Inbound) und Versenden (Outbound) von Nachrichten über das Messaging-System. Diese Zwischenschicht bietet für die Applikation eine zusätzliche Abstraktion zum Messaging-System. Abbildung 2 fasst nochmals die wesentliche EIP Patterns zusammen.

Abb. 2: Content-Based Router, Message-Splitter und Message-Aggregator

Im Folgenden werden die Komponenten eines ESB näher erläutert: MOM, Binding-Komponenten, Transformatoren und Router.

Message Oriented Middleware (MOM)

Die Hauptaufgabe eines ESB ist es, eine standardisierte Integrationsplattform zur Verfügung zu stellen, damit Applikationen auf einfache Weise miteinander verbunden werden können. Die MOM ist der Bus beim ESB und stellt die Kommunikationsplattform für die zu integrierenden Systeme zur Verfügung. Bei der Kommunikation zwischen den Systemen werden Nachrichten ausgetauscht, welche über diesen Bus transportiert werden. Dabei müssen Konzepte wie synchrones/asynchrones Messaging, Publish/Subscribe, Request/Reply, Store-and-Forward oder die sichere Zustellung (Reliable Messaging) von Nachrichten unterstützt werden. Beim Messaging kommt man auch oft mit dem Begriff „Broker“ in Berührung. Der Broker nimmt Nachrichten entgegen und leitet diese an die adressierten Empfänger weiter.

Der Bus selbst verwendet ein standardisiertes Format der Nachrichten, vorzugsweise XML (können aber auch Objekte sein, wie es zum Beispiel bei Mule der Fall ist). Viele ESB-Hersteller setzen jedoch auf XML, da für diesen Standard viele Werkzeuge wie XSD, XLST, XPath oder XQuery eingesetzt werden können.
Der ESB verpackt nun die MOM mit einer zusätzlichen Abstraktionshülle, damit sich Integrationsentwickler mit dieser Schicht nur mehr in Spezialfällen auseinandersetzen müssen. Tabelle 1 fasst die Abgrenzung zwischen ESB und MOM zusammen. Wichtig ist zu erwähnen, dass der ESB auf eine MOM aufsetzt.

Tabelle 1: Gegenüberstellung ESB und MOM
MOM ESB
Transport JMS Provider für JMS, SOAP, File, Stream, etc.
Mediation und Rules Routing und Datentransformation Protokolltransformation
Routing
Datentransformation
Deployment Client Code Dynamische Konfiguration
Binding-Komponenten

Die Integration von Applikationen erfolgt auf standardisiertem Weg, wie etwa Web Services, JCA oder ähnliche. Durch die Verwendung von Web Services ist es auch möglich, mit plattformübergreifenden (so fern es keine weiteren Probleme gibt) Applikationen Kontakt aufzunehmen. Mithilfe von WSDLs lassen sich die Business Services neutral beschreiben und bilden somit abstrakte Endpunkte für den ESB.

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.