Key Visual - Manage Your Business Integration
 

Mär

13

Auf Kamelen durch die Wüste der Integration

By Philipp Schnürer on We, Mar/13/2013 : 15:10

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.

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

Es wurden insgesamt drei Spring-XML Files, zwei Java-Klassen und zwei Java-Objektspezifikationsdateien angelegt.

Die XML-Dateien wurden der Übersichtlichkeit halber aufgeteilt in die Spezifikationen der Route, der Datenbank und der JSON-Übersetzung.

Die Java Klassen dienten des Zusammenbaus der REST-URL und des Querys für die Datenbank.

3 Ablauf

Die Route selbst wurde in drei Teile aufgespalten:

- Ein Teil zum Einlesen der Daten

- Ein Teil für das Abholen und die Transformation der Daten vom Webservice

- Ein Teil für das schreiben in die Datenbank

Auf diese Weise lässt sich die Eingabe einfach anpassen, es können verschiedene Entry-Points gesetzt werden ohne die weitere Logik der Route zu beeinflussen.

Gleichermaßen kann der Endpunkt, der auf die Datenbank verweist auf diese Weise auch leichter angepasst werden, sollten die Daten beispielsweise noch an weitere Stellen versendet werden.

Zusätzlich wurde ein Endpunkt angebracht, der den Inhalt der Tabelle nach der Verarbeitung in ein Log ausgibt

Es wurden direkte Endpunkte zur Weiterleitung verwendet, im optimalen Falle würde man hier noch Persistenz, zum Beispiel in Form von ActiveMQ Queues hinzufügen.

Das Anstoßen der Route geschieht automatisch alle 5 Minuten. Alternativ kann allerdings auch eine CSV-Datei mit den gewünschten Ländercodes in ein vorgegebenes Verzeichnis kopiert werden und wird von dort konsumiert und Ausgeführt.

4 Erweiterbarkeit, Modifizierbarkeit und Verständlichkeit

Durch die Modulare Struktur der Camel Routen lässt sich das Programm leicht erweitern und Änderungen wie die Adresse der Datenbank oder des Webservices sind in den jeweiligen Dateien leicht vorgenommen.

Der Code im XML Format ist leicht verständlich und kann durch die XML Kommentar-Notation dokumentiert werden.

5 Logging und Monitoring

Camel ist komplett mit Log4j kompatibel und bietet damit die Möglichkeit, sowohl Logs in einer Konsole als auch in Dateien auszugeben.

Camel kann über eine JMX-Schnittstelle angesprochen werden und stellt auch einige APIs zur Verfügung, welche dann in Java angesprochen werden können um eine entsprechende Monitoring Schnittstelle zu ermöglichen.

Camel besitzt auch seit Version 2.5 eine Webkonsole, welche seit Version 2.8 ebenfalls als Servlet aufgesetzt werden kann. Hier können Endpunkte untersucht und Nachrichten an bestimmte Endpunkte geschickt werden. Die Webkonsole muss allerdings gesondert heruntergeladen werden.

Außerdem ist externes Monitoring über den gewählten Container möglich. Zum Beispiel können Websphere Application Server mit der Camel Route als OSGi Bundle oder Apache Tomcat mit der Camel-Route als Servlet verwendet werden und können dann ihre Monitoring Möglichkeiten zur Verfügung stellen.

6 Exception Handling

Exceptions können mit entsprechenden Knoten aus der Camel Route heraus abgefangen und entsprechend abgehandelt werden. Hierfür stehen bestimmte Knotenpunkte zur Verfügung, von denen Camelrouten für die Fehlerbewältigung abgehen können.

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



Margin
Blog-Autor
Philipp Schnürer
Philipp Schnürer
Software Engineer
+49 221 97343 35
Margin
Informationen
7.0.1  7.0.2  8.0  Absatzmarkt  Active MQ  Active  Administration  Agile Lösungen  Agility  AMS  Analyst  Analytics  Anbindung  Anforderungen  Anwenderkonfernz  Apache  Application Server  API Management  API  AS2  ASP  Automatisierung  b2b  B2B Integration  Basic  Big Data  Blogreihe  Bluemix  Blueworks  BPM  Broker  BRMS  Bus  Business Process Management  Business Rules  Buzzword  Camel  Cast Iron  Cloud API  Cloud Computing  Cloud Integration  Cloud  Commerce  Compliance  Conference  Connect:Direct  CPLEX  CXF  DataPower  Decision Server Insights  Deployer  Deployment  Development  DFDL  Digitalisierte Prozesse  Digitalisierung  Domino  DSI  e-Fachverfahren  ersteinrichtung  Edi  Edition  Einführung  Einsatz  Entscheidung  Entwicklung  ESB  Excel  Fahrplanoptimierung  Features  Federated Connectivity  File Transfer  Filetransfer  Finance  FTE  gentran  gis  Geschäftsprozesse  Go Live  Google  Governance  Hardware ESB  Hosting  Hybrid-Cloud  Hybrid Cloud  Hybrid  IBM Blueworks  IBM BPM  IBM Integration Bus  IBM InterConnect  IBM  ILOG DOC  ILOG LNP  ILOG Transportation Analyst  ILOG  Impact  Infrastruktur  Installation  Integration as a Service  Integration Bus  Integration  Integrator  Interoperabilität  IT-Business-Alignment  Konfiguration  Linear  LNP  Logistik  monitoring  M2M  Manage File Transfer  Management  Marktplatz  Mathematik  Mediation  Message Broker  Messages  Messagesight  Messaging  MFT  Migration  Modellierung  MQ  MQTT  Multicast  Muster  Nachlese  Neuerungen in V7.0.1  Neuerungen  off-premise  on-premise  ODM  ODME  Öffentliche Verwaltung  Open Source  Operational Decision Management  Optimierung  OPL  OSGi  Outsourcing  PaaS  Pattern Integration  Pattern  Patterns  Performance  Portfolio  Praxis  Private  Process Server  Produktionsplanung  Prozessautomatisierung  Prozessintegration  Prozessmodelierung  Prozessoptimierung  PureSystem  Qualität  Real Time  Regelmanagement  Rollen  Routenplanung  Routing  ROI  SaaS API  SaaS Integration  SaaS  Salesforce  Schwerpunktanalyse  Script  SCM  Security  Service Federation Management  Servicemix  SFM  SI  Slotting  SoapUI  SOA Cloud Symposium  SOA  SPSS  Standard  Standardplattform  Standardtool  Standortoptimierung  Sterling Integrator  Sterling  SugarCRM  Symposium  Template  TIP  TM1  TOSCA  Transportation  Transportoptimierung  Übersicht  Umstieg  Unix  Update  vergleich  Vorteile  worklight  workload  wtc  Wartung  Websphere  Websphere: Rollen  WebService Security  WebSphere Enterprise Service Bus  WebSphere ESB  WebSphere MessageBroker  WebSphere Technical Conference  WebSphere  WESB  Workloads  WODM  XAR