Auf Kamelen durch die Wüste der Integration

    Wissensbeitrag

    Betrachten wir das Open Source Integrationsframework Apache Camel einmal aus Entwicklungsperspektive näher bei seinem Wüstenritt. Es gibt viele Möglichkeiten eine einfache Punkt-zu-Punkt Anbindung zu gewährleisten und auch die Auswahl an Software ist überwältigend. Im Rahmen eines Kundenprojektes sollte die Anbindung eines RESTful Webservices an eine DB2 Datenbank realisiert werden. Hierfür wurde zum einen eben genanntes Camel verwendet und als Alternative dieselbe Anbindung im WebSphere Message Broker realisiert.

    Die Kundensituation

    Es sollten REST-Services aufgerufen werden, und die zurückgegebenen JSON-Objekte transformiert und in eine Datenbank geschrieben werden. Die Aufgabe gliederte sich hierbei grob in drei Teile:

    1. Aufrufen des Webservices, empfangen der JSON-Objekte
    2. Transformation der JSON-Objekte für die Weiterverarbeitung
    3. Speichern der Informationen in einem Datenbanksatz

    Das Aufrufen der Webservices sollte dabei sowohl automatisch nach einer gewissen Zeit wiederholt als auch manuell angestoßen werden können.

    Für die exemplarische Darstellung wurde in diesem Beispiel ein CXF-Webservice auf einem Tomcat Server platziert, welcher Länder anhand eines Ländercodes mit Name, Hauptstadt und Kontinent als JSON Objekt ausgibt.

    Realisierung mit Apache Camel 2.10.4

    1 Einführung

    Apache Camel ist ein Integrationsframework. Es können Routen erstellt werden, welche Punkte miteinander verbinden. Diese Routen können in einer Vielzahl verschiedener Domain Specific Languages, wie Java- oder Spring-DSL realisiert werden.

    Sie können dann beispielsweise von der Kommandozeile oder aus einem Java-Programm heraus gestartet werden oder als OSGi-Bundle oder Servlet in einem entsprechenden Container abgelegt und verwendet werden.

    Für die Implementierung in diesem Falle wurde Spring-XML gewählt, die Route wurde mit Hilfe von Maven gestartet.

    Für das Auflösen von Abhängigkeiten wurde Apache Maven verwendet. In der POM.xml wurden alle Abhängigkeiten von Camel Bibliotheken und Logging Bibliotheken aufgelöst. Ein zusätzliches Herunterladen von Camel war dadurch nicht mehr nötig.

    Die einzige Abhängigkeit, die nicht direkt aus der Maven Repository aufgelöst werden konnte waren die JDBC-Konnektoren für die DB2 Datenbank. Diese mussten zusätzlich heruntergeladen und in den Build-Path eingebunden werden.

    2 Programmstruktur
    3 Ablauf
    4 Erweiterbarkeit, Modifizierbarkeit und Verständlichkeit
    5 Logging und Monitoring
    6 Exception Handling

    Die Fortsetzung, in der die Realisierung mittels des WebSphere Message Brokers gezeigt wird, folgt in Kürze.

    Autor

    Philipp Schnürer
    X-INTEGRATE Software & Consulting GmbHKontakt