31
Apache Camel Grundlagen (Teil 2) Enterprise Integration Patterns Talend, Global Leader in Open Source Integration Solutions Bernhard Schuhmann Christian Schneider

Webinar Apache Camel Grundlagen Teil 2

Embed Size (px)

DESCRIPTION

- Testing- Debugging- Enterprise Integration Patterns- Larger example

Citation preview

Page 1: Webinar Apache Camel Grundlagen Teil 2

Apache Camel Grundlagen (Teil 2)

Enterprise Integration Patterns

Talend, Global Leader in Open Source Integration Solutions

Bernhard Schuhmann

Christian Schneider

Page 2: Webinar Apache Camel Grundlagen Teil 2

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

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 2

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

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

© Talend 2011 6

Das Apache Camel Projekt

Leistungsfähiges Integrationsframework, basiert auf den Enterprise Integration Patterns Open Source Apache License v2 Homepage des Projekts: http://

camel.apache.org Aktive und wachsende Community

Highlights Projekt wurde im Mai 2007 gestartet Aktuelle stabile Version 2.8.1 Ausgereift, für den produktiven Einsatz

geeignet Unterstützt verschiedenste Technologien,

über 100 Komponenten Umfangreiche Dokumentation Mehrere Hersteller unterstützen das Projekt

Page 7: Webinar Apache Camel Grundlagen Teil 2

© Talend 2011 7

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 8: Webinar Apache Camel Grundlagen Teil 2

© Talend 2011 8

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)

Processors können kombiniert werden (eine Pipeline ist z.B. ein Processor, der die inneren Processors der sequenziell ausführt)

Eine Route ist (vereinfacht) ein Consumer, der mit einem zusammengesetzten Processor verbunden ist

Camel nutzt URLs, um Endpoints zu konfigurieren

Page 9: Webinar Apache Camel Grundlagen Teil 2

© Talend 2011 9

Konventionen beim Routing

Konvention vor Konfiguration!

Die out Message des vorherigen Processor ist die in Message des jeweils nächsten

Gibt der vorherige Processor keine out Message zurück, wird die vorige in Message zur out Message

Am Ende der Verarbeitung wird die letzte out (oder in) Message zur Rückgabenachricht und vom Consumer zurückgeschickt (in-out MEP)

Exchange Diagramm aus Camel in Action, © Manning 2011

Consumer

out in

out in

in

out out

Pipes and Filters EIP (Processors)

Page 10: Webinar Apache Camel Grundlagen Teil 2

© Talend 2011 10

Wie funktioniert Camel?

Der Consumer erhält/erzeugt eine Message, verpackt sie in einen Exchange und übergibt diesen an einen Processor

Der Consumer legt das MEP des Exchange fest (in-out, in-only) Automatische Konvertierung der Message mittels

TypeConverters (falls der nächste Processor einen Typ benötigt, der noch nicht in der Message enthalten ist)

Eine Route wird (üblicherweise) mittels Domain Specific Language (DSL) definiert. Diese DSL erzeugt zur Laufzeit zuerst ein Modell (AST) der Route erzeugt, anhand des Modells werden im zweiten Schritt die Route und ihre Processors instanziiert

Routes haben keinen Zustand (sind stateless)!

Page 11: Webinar Apache Camel Grundlagen Teil 2

© Talend 2011 11

Routen debuggen

Um Routen zu debuggen, können Sie… …mit einem vereinfachten Testfall beginnen …Unit Tests (JUnit) nutzen …das Test Kit von Camel nutzenhttp://camel.apache.org/testing.html …“mock://...” Endpoints nutzen …Logdateien und den “log://...” Endpoint nutzen …Camel Tracer Interceptor nutzenhttp://camel.apache.org/tracer.html …den Java Debugger einer IDE (z.B. Eclipse) nutzen …Camel Debugger nutzenhttp://camel.apache.org/debugger.html …die Funktionen von JMX und Notifications nutzen

Page 12: Webinar Apache Camel Grundlagen Teil 2

Genug der Theorie…

Page 13: Webinar Apache Camel Grundlagen Teil 2

© Talend 2011 13

Enterprise Integration Patterns

Page 14: Webinar Apache Camel Grundlagen Teil 2

© Talend 2011 14

Integration Styles

Die Kategorie Integration Styles enthält übergeordnete Architekturmuster:“Wie integriert man mehrere Applikationen, damit diese zusammenarbeiten und Informationen austauschen können?”

File Transfer

Shared Database

Remote Procedure Invocation

Messaging

Mit Camel können alle dieser Architekturmuster umgesetzt werden

Page 15: Webinar Apache Camel Grundlagen Teil 2

© Talend 2011 15

Messaging Channels

Point-to-Point – genau ein Empfänger bekommt die Nachricht

Publish-Subscribe – versendet Nachrichten an alle interessierten Empfänger

Dead Letter Channel – wie wird mit unzustellbaren Nachrichten umgegangen

Guaranteed Deliver Channel – stellt die Zustellung der Nachricht sicher, auch wenn die Infrastruktur ausfällt

Channel Adapter – Bindeglied zwischen Applikation und Messaging System zum Senden und Empfangen von Nachrichten

Messaging Bridge – verbindet mehrere Messagingsysteme miteinander, Nachrichten in einem System sind auch in den angeschlossenen Systemen verfügbar

Messaging Bus – eine Architektur, die es Applikationen ermöglicht, zusammen zu arbeiten und trotzdem unabhängig zu bleiben. Applikationen können ohne Auswirkung auf die anderen hinzugefügt oder entfernt werden.

Page 16: Webinar Apache Camel Grundlagen Teil 2

© Talend 2011 16

Messaging Endpoints (Consumers)

Mit ihnen beginnt eine Camel Route Event-Driven Consumer – verarbeitet eine

Nachricht, sobald sie eintrifft Polling Consumer – verarbeitet eine Nachricht,

wenn die Applikation dazu bereit ist Competing Consumers – verarbeiten Nachrichten

parallel Idempotent Consumer – kann Duplikate

verarbeiten

from("direct:start")from("timer://eip?fixedRate=true&delay=0&period=500")from("direct:idempotent").idempotentConsumer(header("id"), store)

Page 17: Webinar Apache Camel Grundlagen Teil 2

© Talend 2011 17

Messaging Endpoints (Producers)

from("direct:start“).to("mock:result");

Kommunizieren mit anderen Systemen Message Endpoint – sendet eine Nachricht über einen

Messaging Channel Transactional Client – steuert Transaktionen im

Messagingsystem Messaging Gateway – kapselt die Interaktion mit dem

Messagingsystem vom Rest der Applikation

Page 18: Webinar Apache Camel Grundlagen Teil 2

© Talend 2011 18

Message Transformation

from("direct:set-body").setBody().constant("Goodbye World")from("direct:bean").to("bean:translatorBean")from("direct:processor").process(translatorProcessor)from("direct:template").to("velocity:templates/report.vm")

Message Translator“Wie können Applikationen, die unterschiedliche Datenformate nutzen, miteinander kommunizieren?” Implizit mittels TypeConverter Explizit – in er DSL deklariert

Normalizer“Wie werden Nachrichtenverarbeitet, die

semantisch gleich sind, aber unterschiedliche Formate haben?”

Page 19: Webinar Apache Camel Grundlagen Teil 2

© Talend 2011 19

Message Transformation

from("direct:start") .enrich("direct:enrich", new AggregationStrategy() { @Override public Exchange aggregate(Exchange, Exchange) {

Content Enricher“Wie kann mit einem System kommuniziert werden, wenn der Sender nicht alle erforderlichen Daten hat?”

Content Filter“Wie kann man die Verarbeitung umfangreicher Nachrichten vereinfachen, wenn nur wenige Daten relevant sind?”

Page 20: Webinar Apache Camel Grundlagen Teil 2

© Talend 2011 20

Message Transformation

from("direct:set-body") .setBody().constant("Goodbye World") .setHeader("secret")from("direct:bean").to("bean:wrapperBean")from("direct:processor").process(PwrapperProcessor)N

Envelope Wrapper“Wie können Bestandssysteme Nachrichten austauschen, die bestimmten Anforderungen, wie das Vorhandensein bestimmter Header oder Verschlüsselung, genügen müssen?”

Page 21: Webinar Apache Camel Grundlagen Teil 2

© Talend 2011 21

Message Transformation

from("direct:start") .filter(header("rank").isGreaterThan("3"))

Message Filter“Wie kann eine Komponente vermeiden, uninteressante Nachrichten zu erhalten?”

Page 22: Webinar Apache Camel Grundlagen Teil 2

© Talend 2011 22

Message Routing

.choice() .when(header("rank").isEqualTo("5")).to("...") .when(header("rank").isEqualTo("4")).to("...") .when(header("rank").isEqualTo("3")).to("...") .otherwise().to("log:maybe-some-other-time").end()

Message Router“Wie kann man Verarbeitungsschritte trennen und damit Nachrichten abhängig von bestimmten Kriterien an verschiedene Komponenten (filters) weitergereicht werden?”

Content-Based Router“Was ist zu tun, wenn eine bestimmte logische Funktion von mehreren Applikationen/Systemen bereitgestellt wird?”

Page 23: Webinar Apache Camel Grundlagen Teil 2

© Talend 2011 23

Message Routing

Dynamic Router“Wie kann man die Abhängigkeit zwischen Router und allen Zielsystemen vermeiden, und trotzdem dessen Effizienz behalten?”

Recipient List“Wie wird eine Message zu einer dynamischen Liste von Empfängern geroutet?”

Routing Slip“Wie wird eine Nachricht nacheinander zu mehreren Verarbeitungsschritten geroutet, wenn diese Schritte während der Entwicklung noch nicht bekannt sind und je nach Nachricht variieren können?”

Page 24: Webinar Apache Camel Grundlagen Teil 2

© Talend 2011 24

Message Routing

from("direct:start") .split(body().tokenize("\n“))

from("seda:aggregate") .aggregate(constant(true)).completionSize(2) .completionInterval(1000L).groupExchanges()

Splitter“Wie werden Nachrichten verarbeitet, die mehrere Teile enthalten, die wiederum unterschiedlich zu behandeln sind?”

Aggregator“Wie werden getrennte Nachrichten, die in Bezug stehen, zusammengeführt, um sie als Ganzen zu verarbeiten?”

Page 25: Webinar Apache Camel Grundlagen Teil 2

© Talend 2011 25

Message Routing

Message Broker“Wie kann man den Empfänger einer Nachricht vom Sender entkoppeln und die zentrale Kontrolle über den Nachrichtenaustausch behalten?”

Process Manager“Wie wird eine Nachricht durch mehrere Verarbeitungsschritte geroutet, wenn die Schritte während der Entwicklung noch nicht bekannt und nicht sequentiell sind?”

Page 26: Webinar Apache Camel Grundlagen Teil 2

© Talend 2011 26

System Management

Detour“Wie kann man eine Nachricht zur Validierung, zum Testen oder zum Debuggen über Zwischenschritte routen?”

Wire-tap“Wie schaut man in eine Nachricht, die über einen Point-to-point Kanal transportiert wird?”

from("direct:start") .wireTap("seda:wiretap")

Page 27: Webinar Apache Camel Grundlagen Teil 2

© Talend 2011 27

System Management

Smart Proxy“Wie kann man Anfragen an einen Service den Antworten zuordnen, die er an die vom Sender angegebene Adresse schickt?”

(z.B. verwendet für die Integration zwischen asynchronen und synchronen Systemen, kann die Skalierbarkeit von Systemen erhöhen)

Page 28: Webinar Apache Camel Grundlagen Teil 2

EIPs in der Praxis…

Page 29: Webinar Apache Camel Grundlagen Teil 2

© Talend 2011 29

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 30: Webinar Apache Camel Grundlagen Teil 2

© Talend 2011 30

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 31: Webinar Apache Camel Grundlagen Teil 2

Vielen Dank!