Talend ESB - Open Source Integration Vergleich Teil 4

Das Talend Open Studio for ESB kann mit einem Download von 1,2 Giga Byte frei heruntergeladen werden. Es beinhaltet eine Entwicklungs- sowie eine Laufzeitumgebung für Integrationsprojekte.

Talend Integration basiert auf zahlreichen Apache Projekten. Davon profitiert auch die Open Source Community, da Talend Mitarbeiter sich aktiv an der Entwicklung von Apache Projekten beteiligen.

1.Talend Studio

Im Studio können graphisch Jobs und Routen erstellt werden. Jobs eignen sich für eine zeilenorientierte Integration im Sinne von relationalen Datenbanken. Eine Zeile entspricht dabei einem Datensatz. Routen eignen sich für andere Datenformate, die nicht Datensatz basiert sind wie z.B. XML oder JSON. Für Jobs und Routen gibt es jeweils eine eigene Ansicht ( Eclipse Perspektive). Die Arbeit mit Jobs und Routen unterscheiden sich so sehr, dass es sich auch um zwei verschiedene Produkte handeln könnte. Jobs und Routen lassen sich aber kombinieren. Es gibt Komponenten, mit denen man aus einem Job eine Route aufrufen kann und umgekehrt. Einige Aufgaben lassen sich sowohl mit einem Job als auch mit einer Route lösen.

1.1. Jobs

Jobs beschreiben Extract Transform Load (ETL) Aufgaben, bei denen Zeilen aus Datenbanktabellen gelesen oder geschrieben werden. ETL Werkzeuge sind ideal für Unternehmen, die direkt auf Ihre Daten per Datenbank zugreifen möchten oder könnten. Eine typische Anwendung ist das Übertragen von Daten aus einer CSV-Datei in eine Tabelle. Bereits im Adapter werden die Daten in ein normiertes Format basierend auf Zeilen umgewandelt. Alle Arbeitsschritte in einem Job arbeiten auf den Zeilen. Für die Transformation in andere Formate gibt es einen komfortablen Mapper.


Abbildung 1: Talend Mapper

Abbildung 2 zeigt einen Ausschnitt aus einem mitgelieferten Beispiel. Bereits an den Icons kann man die Ausrichtung auf Tabellen erkennen. Die Anzahl der verarbeiteten Zeilen (Rows) wird im Job-Editor live während der Ausführung aktualisiert. Nützlich finde ich die Anzeige der verarbeiteten Zeilen an jeder Komponente, so sieht man sofort, welche Pfade die Nachrichten nehmen und wo eine Nachricht in viele kleine aufgespalten wird.


Abbildung 2: Job im graphischen Editor

1.2. Routen

Neben Jobs kann ein Projekt auch Routen enthalten. Im Gegensatz zu Jobs können durch Routen Daten in einem beliebigen Format fließen. Ferner gibt es für die Erstellung von Routen in der Palette zahlreiche Enterprise Integration Patterns zur Auswahl.


Abbildung 3: Palette mit EIP Mustern

Abbildung 4 zeigt eine einfache Route im Designer des Studios. Selbst bei der Visualisierung von Routen ist bei Talend die Denkweise in Zeilen zu erkennen. Die Verbindungslinie ist mit Zeilen pro Sekunde (rows/s) anstatt mit Nachrichten pro Sekunde beschriftet.


Abbildung 4: Einfache Route im Designer

Routen, die graphisch im Talend Studio erstellt wurden, werden zu Java Quellcode für Apache Camel transformiert. Das folgende Listing zeigt für obige Route einen Ausschnitt aus dem generierten Quellcode mit der Camel DSL.

from("file:///Users/thomas/tmp/in2" + "?noop=true"
    + "&autoCreate=true" + "&flatten=false"
    + "&bufferSize=128").routeId("FileIn_cFile_2")
        .to("log:FileIn.cLog_1" + "?level=WARN")
        .id("FileIn_cLog_1");

Der generiere Quellcode kann vom Entwickler nicht verändert werden. Er ist aber durch einen Klick einsehbar und ein wertvolles Mittel für die Fehlersuche.

Eine typische Fehlermeldung ist in der Abbildung unten zu sehen.


Abbildung 5: Fehlermeldung im Talend Studio

Die Fehlerbeschreibung: „Type mismatch: cannot convert from JsonPath to String“ ist bei der Fehlersuche nicht besonders nützlich. Beim Blick in das Tab mit dem generierten Quellcode findet man schnell die betroffene Stelle. Der Fehler wird von Eclipse hervorgehoben und ein Hinweis erklärt die Ursache:


Abbildung 6: Fehler in der Code-Ansicht

Hinter dem Gleichheitszeichen fehlt ein Wert. Wahrscheinlich wurde in einem Dialog ein Wert vergessen. Wer Java kann ist hier trotz GUI klar im Vorteil.

Die Oberfläche hat aber auch seine Vorteile: Adapter und Enterprise Integration Patterns können bequem über Formulare konfiguriert werden. In viele Felder kann entweder eine Konstante in Anführungszeichen oder der Name einer Variablen eingegeben werden. So werden Anfänger gut unterstützt und Profis stehen fortgeschrittene Techniken zur Verfügung. Im Gegensatz zu älteren Versionen sind Felder jetzt mit Anführungszeichen vorbefüllt, um lästige Fehler im Quellcode zu vermeiden.


Abbildung 7: Formular für die Konfiguration eines Adapters

1.3. Job oder Route?

Die Frage ist nicht einfach zu beantworten. Für Jobs spricht ein zeilenbasiertes Format der Daten wie z.B. CSV oder Datenbanktabellen. Für Routen sprechen Formate mit Baumstruktur wie XML oder JSON.

Für Routen stehen zahlreiche Enterprise Integration Patterns zur Verfügung, die von Camel bereitgestellt werden. Damit eignen sich Routen besser für komplexe Nachrichtenflüsse mit Verzweigungen.

Da es für Routen nur ein knappes Dutzend Konnektoren für die gängigsten Protokolle wie HTTP oder Datei gibt, ist man öfters gezwungen auf einen Job zurückzugreifen, um Beispielsweise eine Verbindung zu Salesforce oder SAP aufzubauen.

In der Praxis kombinieren wir oft Jobs und Routen. Für jede Aufgabe können wir so das beste Werkzeug verwenden. Talend stellt Konnektoren zur Verfügung, mit denen aus einem Job eine Route aufgerufen werden kann und umgekehrt.

2. Mapping

Für ein graphisches Mapping wird eine Beschreibung der Formate in Form eines XML oder JSON Schemas benötigt. Ist kein Schema vorhanden, kann der Mapper ein Schema aus einer Beispieldatei erzeugen. Das Erstellen eines Schemas aus einem Beispiel ist schnell erledigt und die Struktur in Form eines Baumes unterstützt die Arbeit beim Zuordnen enorm.

3. Runtime

Der Download des Talent Open Studio enthält neben der Entwicklungsumgebung auch eine Runtime zum Ausführen der mit dem Studio erstellten Projekte. Die Runtime basiert auf Apache Projekten u.a. ActiveMQ, Camel, CXF, Karaf und Zookeeper. Der Aufbau der Karaf Distribution entspricht im wesentlichen der vom ServiceMix. Die Struktur der Verzeichnisse ist weitestgehend identisch. Als Mehrwert enthält Talend Integration einige Erweiterungen.

4. Erweiterungen

Talend ergänzt die Apache Projekte u.a. durch die folgenden Add-ons:

  • HypericHQ Plugin
  • Nagios Templates zum Monitoring von Camel, CXF & ActiveMQ
  • Beispiele für die Konfiguration der Datenbanken Oracle, MySQL, DB/2, Postgres, SQLServer
  • Beispiele für die SAP Anbindung über den SAP Java Connector (JCO) der SAP.

Weitere Add-ons sind:

  • Der Service Locator, ein Repository für Service Endpunkte, der Failover und Loadbalancing ermöglicht.
  • Ein Service Activity Monitoring mit dem Service Aufrufe protokolliert und überwacht werden können.

Die Runtime verwendet relativ aktuelle Versionen der Open Source Projekte.

5. Fazit

Der Mehrwert von Talend gegenüber den reinen Apache Projekten liegt in der Unterstützung der ETL Jobs und im graphischen Editor des Talend Studio. Für den einen oder anderen sind bestimmt auch die Erweiterungen wie z.B. das HypericHQ Plugin nützlich. Wer gerne und viel mit den ETL Jobs arbeitet wird mit dem Talend Produkt glücklich.

Für den Einsatz der Routen sind gute Java und Camel Kenntnisse hilfreich. Bei der Fehlsuche muss Quellecode eingesehen werden, die Parameter für die Komponenten der Palette sind Camel Optionen und für die Programmierung im Kleinen wird die Skriptsprache simple von Camel verwendet z.B. für die Konfiguration eines Routers oder Filters. Persönlich finde ich den Editor für Routen und die Formulare für die Konfiguration zu umständlich. Mit der Camel Java DSL habe ich mehr Möglichkeiten und komme schneller ans Ziel, aber das ist Ansichtssache.

Um alle Features vom Talend ESB wie Monitoring oder DataQuality nutzen zu können ist eine Lizenzierung notwendig.