Webinar Apache Camel Grundlagen Teil 3

21
Apache Camel Grundlagen (Teil 3) Apache Camel für Fortgeschrittene Talend, Global Leader in Open Source Integration Solutions Bernhard Schuhmann Christian Schneider

description

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

Transcript of Webinar Apache Camel Grundlagen Teil 3

Page 1: Webinar Apache Camel Grundlagen Teil 3

Apache Camel Grundlagen (Teil 3)

Apache Camel für Fortgeschrittene

Talend, Global Leader in Open Source Integration Solutions

Bernhard Schuhmann

Christian Schneider

Page 2: Webinar Apache Camel Grundlagen Teil 3

© 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 [email protected] 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

Page 3: Webinar Apache Camel Grundlagen Teil 3

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

Page 4: Webinar Apache Camel Grundlagen Teil 3

© 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

Page 5: Webinar Apache Camel Grundlagen Teil 3

© Talend 2011 5

Rückblende

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

Page 6: Webinar Apache Camel Grundlagen Teil 3

© 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

Page 7: Webinar Apache Camel Grundlagen Teil 3

© 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

Page 8: Webinar Apache Camel Grundlagen Teil 3

© Talend 2011 8

Enterprise Integration Patterns

Page 9: Webinar Apache Camel Grundlagen Teil 3

© 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.

Page 10: Webinar Apache Camel Grundlagen Teil 3

© 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

Page 11: Webinar Apache Camel Grundlagen Teil 3

© 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");

Page 12: Webinar Apache Camel Grundlagen Teil 3

© 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.

Page 13: Webinar Apache Camel Grundlagen Teil 3

© 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

Page 14: Webinar Apache Camel Grundlagen Teil 3

Genug der Theorie…

Page 15: Webinar Apache Camel Grundlagen Teil 3

© Talend 2011 15

Monitoring Regeln(JMX)

Page 16: Webinar Apache Camel Grundlagen Teil 3

© 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!

Page 17: Webinar Apache Camel Grundlagen Teil 3

© 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.!

Page 18: Webinar Apache Camel Grundlagen Teil 3

Und wie funktioniert das alles zusammen…

Page 19: Webinar Apache Camel Grundlagen Teil 3

© Talend 2011 19

Benutzen Sie bitte das Q&A Fenster, Sie können Fragen auch per E-Mail an [email protected] stellen.

Vielen Dank für Ihre Aufmerksamkeit!

Page 20: Webinar Apache Camel Grundlagen Teil 3

© 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

Page 21: Webinar Apache Camel Grundlagen Teil 3

Vielen Dank!