Webinar Apache Camel Grundlagen Teil 3

Post on 05-Dec-2014

1914 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

- Eigene Komponenten- Beispiel: IRC Bot zur Abfrage von Jira Issues

Transcript

Apache Camel Grundlagen (Teil 3)

Apache Camel für Fortgeschrittene

Talend, Global Leader in Open Source Integration Solutions

Bernhard Schuhmann

Christian Schneider

© Talend 2011 2

Herzlich Willkommen!

Einige logistische Hinweise… Alle Teilnehmer sind stumm geschalten Sie können trotzdem Fragen stellen

Benutzen Sie dazu bitte das Q&A Fenster auf der rechten Seite Ihres Bildschirms, unten im Fenster von GoToWebinar

Wir beantworten Ihre Fragen am Ende des Webinars Wenn nicht genügend Zeit bleibt, alle Fragen zu beantworten, reichen wir

die Antworten per E-Mail nach Sie können Fragen auch per E-Mail an an webinar@talend.com stellen

Sollten Sie Schwierigkeiten haben (z.B. mit dem Ton), schreiben Sie bitte eine kurze Nachricht ins Q&A Fenster

Dieses Webinar wird aufgezeichnet und in Kürze auf unserer Website unter On Demand Webinars zur Verfügung gestellt

Webinarreihe Apache Camel GrundlagenTeil 1: Erste Schritte mit Apache CamelTeil 2: Enterprise Integration PatternsTeil 3: Apache Camel für Fortgeschrittene

© Talend 2011 4

Investoren

StandorteFirmensitz San Francisco (Los Altos) Paris (Suresnes)

Niederlassungen Orange County (Irvine) Boston (Burlington) New York (Tarrytown) London (Maidenhead) Utrecht Nuremberg Bonn Munich Milan (Bergame) Tokyo Beijing

Talend weltweit…

Global leader in open source integration

© Talend 2011 5

Rückblende

Erste Schritte Unsere erste Camel Applikation Die Konzepte von Camel Typische Use Cases

© Talend 2011 6

Grundlegende Konzepte von Camel

Camel basiert auf EIPs! Messages und Exchanges Processors Endpoints Producers und Consumers Languages, Expressions und Predicates TypeConverters Routes CamelContext, Services und Registries

© Talend 2011 7

Routing in Camel

Konvention vor Konfiguration!

(Fast) alles ist ein Processor Ein Processor repräsentiert ein EIP Ein Processor verarbeitet einen Exchange,

indem er die eingehende Message nutzt und optional eine ausgehende Message erzeugt (oder eine Exception)

Camel nutzt URIs, um Endpoints zu konfigurieren

Konventionen beim Routing① Vorige out Message wird die nächste in

Message② Existiert keine vorige out Message, wird

die vorige in Message als nöchste in Message verwendet

③ Die letzte out (oder in) Message wird zurückgegeben

© Talend 2011 8

Enterprise Integration Patterns

© Talend 2011 9

Fehlerbehandlung

Die Verarbeitung von Messages in einer Route kann zu Exceptions (oder Faults) führen. Faults sind dauerhafte Fehler (analog wie bei WSDL), die

Wiederholung des Vorgangs würde den gleichen Fehler erzeugen (z.B. der Fehler HTTP 404). Aus der Sicht von Camel sind Faults reguläre Messages, bei denen das Attribut fault gesetzt ist.

Exceptions sind vorübergehende Fehler. Eine Wiederholung kann erfolgreich sein (z.B. kurzzeitig ausgefallene Services). Während der Abarbeitung der Route auftretende Exceptions werden im Exchange abgelegt.

© Talend 2011 10

Fehlerbehandlung

Camel enthält einen umfangreichen und erweiterbaren Fehlerbehandlungsmechanismus. Auf Exceptions kann reagiert werden: …indem man sie behandelt …die verursachende Message nochmals zustellt (redeliver) …die Nachricht in einen Dead Letter Channel stellt (auch ein

EIP)

Camel enthält einige Error Handler Implementierungen: DefaultErrorHandler – Messages werden nicht erneut

zugestellt, Exceptions gehen zurück an den Aufrufer DeadLetterChannel – Fehlerhafte Messages werden an einen

Dead Letter Queue gesendet, erneutes Zustellen ist konfigurierbar

NoErrorHandler – Keine Fehlerbehandlung LoggingErrorHandler – Nur Protokollierung des Fehlers

© Talend 2011 11

Fehlerbehandlung

Fehler können auf drei Ebenen behandelt werden: CamelContext – global mittels onException Route – mit onException für eine bestimmte Route

Innerhalb einer Route mit doTry/doCatch/doFinally (analog zu benutzen wie try/catch/finally in Java)from("direct:start") .doTry() .process(new ProcessorFail()) .to("mock:result") .doCatch(IOException.class) // mark this as NOT handled, caller will also get the exception .handled(false) .to("mock:io") .doCatch(Exception.class) // by default, handle = true, caller doesn‘t get the exception .to("mock:error") .end();

onException(ValidationException.class).to("direct:validationFailed");

© Talend 2011 12

Eigene Komponenten entwickeln

class=org.apache.camel.component.event.HelloWorldComponent

Eine Komponente… …ist ein JAR/Bundle, in dem eine bestimmte Technologie

gekapselt ist …ist eine Klasse, die das Component Interface implementiert …ist eine Factory und Manager für Endpoints …wird anhand der URI Konvention automatisch gefunden: in einer

Datei mit dem Namen des Defaultschemas (hier “helloworld:”) im Verzeichnis META-INF/services/org/apache/camel/component/ wird die Factory Klasse definiert

…kann auch mittels Alias explizit instanziiert werden (wie etwa amq oder wmq bei JMS)

…enthält optional Implementierungen für DataFormats, Languages, TypeConverters, usw.

© Talend 2011 13

Unsere HelloWorldComponent

Wir erstellen unsere erste Camel Komponente Camel benutzt Apache Maven Wir benutzen den Maven Archetype camel-archetype-component

http://camel.apache.org/camel-maven-archetypes.html Zuerst das Projekt generieren

… und dann bauen

mvn archetype:generate \

-DarchetypeGroupId=org.apache.camel.archetypes \

-DarchetypeArtifactId=camel-archetype-component \

-DarchetypeVersion=2.8.2 \

-DgroupId=org.talend.example \

-DartifactId=example-helloworld \

-Dversion=1.0-SNAPSHOT

mvn install

Genug der Theorie…

© Talend 2011 15

Monitoring Regeln(JMX)

© Talend 2011 16

Best Practices

Mit Camel und den EIP die Zusammenhänge (Semantik) und die Lösungsidee des Integrationsszenarios kommunizieren

Klein beginnen, schrittweise erweitern Routen anhand der Funktionalität in mehrere

Teilrouten unterteilen (möglicherweise sogar mit mehreren RouteBuildern)

Lose Kopplung und asynchrones Messaging Mocks und Unit-/Integrationstests nutzen Deployment in stabile Containers wie Talend

ESB (OSGi/Equinox+Apache Karaf/Camel/CXF/ActiveMQ)

…und Spaß mit Camel haben!

© Talend 2011 17

Typische Anwendungsszenarien

Adapter für Protokoll- oder Datenformate (Mediation)

Bestandsapplikationen als Web Services verfügbar machen

Services aggregieren (leichtgewichtige Orchestrierung, technische Geschäftsprozesse)

Zusätzliche Verarbeitungsschritte (z.B. Validierung von Nachrichten)

…u.v.m.!

Und wie funktioniert das alles zusammen…

© Talend 2011 19

Benutzen Sie bitte das Q&A Fenster, Sie können Fragen auch per E-Mail an webinar@talend.com stellen.

Vielen Dank für Ihre Aufmerksamkeit!

© Talend 2011 20

Weitere Informationen

Camel Website camel.apache.org Talends Website talend.com/products-application-integration/ Talendforge Forum talendforge.org/forum Christian Schneiders Blog liquid-reality.de Christian Schneider auf Twitter @schneider_chris Bernhard Schuhmann auf Twitter @schuhmab

Vielen Dank!

top related