Apache Camel Grundlagen (Teil 2)                    Enterprise Integration PatternsTalend, Global Leader in Open Source In...
Herzlich Willkommen!        Einige logistische Hinweise…         Alle Teilnehmer sind stumm geschalten         Sie könne...
Webinarreihe Apache Camel Grundlagen  Teil 1: Erste Schritte mit Apache Camel  Teil 2: Enterprise Integration Patterns  Te...
Global leader in open source integration  Investoren  Standorte  Firmensitz                         Talend weltweit…      ...
Rückblende         Erste Schritte         Unsere erste Camel Applikation         Die Konzepte von Camel         Typisc...
Das Apache Camel Projekt      Leistungsfähiges Integrationsframework, basiert      auf den Enterprise Integration Patterns...
Grundlegende Konzepte von Camel Camel basiert auf EIPs!   Messages und Exchanges   Processors   Endpoints   Producers ...
Routing in Camel  Konvention vor Konfiguration!     (Fast) alles ist ein Processor     Ein Processor repräsentiert ein E...
Konventionen beim Routing  Konvention vor Konfiguration!     Die out Message des vorherigen Processor ist die in Message ...
Wie funktioniert Camel?     Der Consumer erhält/erzeugt eine Message, verpackt sie in einen      Exchange und übergibt di...
Routen debuggen  Um Routen zu debuggen, können Sie…     …mit einem vereinfachten Testfall beginnen     …Unit Tests (JUni...
Genug der Theorie…
Enterprise Integration Patterns© Talend 2011                      13
Integration Styles Die Kategorie Integration Styles enthält übergeordnete Architekturmuster: “Wie integriert man mehrere A...
Messaging Channels     Point-to-Point – genau ein Empfänger bekommt die Nachricht     Publish-Subscribe – versendet Nach...
Messaging Endpoints (Consumers) Mit ihnen beginnt eine Camel Route   Event-Driven Consumer – verarbeitet eine Nachricht, ...
Messaging Endpoints (Producers)  Kommunizieren mit anderen Systemen     Message Endpoint – sendet eine Nachricht über ein...
Message Transformation  Message Translator  “Wie können Applikationen, die unterschiedliche  Datenformate nutzen, miteinan...
Message Transformation  Content Enricher  “Wie kann mit einem System kommuniziert werden, wenn  der Sender nicht alle erfo...
Message Transformation  Envelope Wrapper  “Wie können Bestandssysteme Nachrichten austauschen,  die bestimmten Anforderung...
Message Transformation  Message Filter  “Wie kann eine Komponente  vermeiden, uninteressante Nachrichten zu erhalten?”    ...
Message Routing  Message Router  “Wie kann man Verarbeitungsschritte trennen und damit  Nachrichten abhängig von bestimmte...
Message Routing  Dynamic Router  “Wie kann man die Abhängigkeit zwischen Router und  allen Zielsystemen vermeiden, und tro...
Message Routing  Splitter  “Wie werden Nachrichten verarbeitet, die mehrere  Teile enthalten, die wiederum unterschiedlich...
Message Routing  Message Broker  “Wie kann man den Empfänger einer Nachricht vom  Sender entkoppeln und die zentrale Kontr...
System Management  Detour  “Wie kann man eine Nachricht zur Validierung, zum  Testen oder zum Debuggen über Zwischenschrit...
System Management  Smart Proxy  “Wie kann man Anfragen an einen Service den  Antworten zuordnen, die er an die vom Sender ...
EIPs in der Praxis…
Vielen Dank für Ihre Aufmerksamkeit!  Benutzen Sie bitte das Q&A Fenster, Sie können Fragen auch per E-Mail  an webinar@ta...
Weitere Informationen     Camel Website camel.apache.org     Talends Website talend.com/products-application-integration...
Vielen Dank!
Nächste SlideShare
Wird geladen in …5
×

Webinar Apache Camel Grundlagen Teil 2

2.574 Aufrufe

Veröffentlicht am

- Testing
- Debugging
- Enterprise Integration Patterns
- Larger example

0 Kommentare
2 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
2.574
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
1
Aktionen
Geteilt
0
Downloads
44
Kommentare
0
Gefällt mir
2
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie
  • Let’s start with a brief company overview.Talend was created in 2005 and is clearly recognized today as the leading provider of open source integrationsoftware, and one of the largest pure play open source vendors.The company is venture-backed by four of the leading VC firms in high tech. Our most recent financial partner is Silver Lake Sumeru, the largest IT-related fund in the US, who led a record $34 million round in late 2010.As you can see on this slide our operations span three continents and we continue to expand at a very fast pace. Talend is an established company, providing open source integration solutions and support for them now and in the long term.Leading provider of open source data management softwareEuropean Roots in France and GermanyMore than 12 Million downloads total, 550.000 users, 2.000 customers320 employees in 2010, growing to 550 employees in 2011#1 in Europe – #5 WorldwideHigh recognitionby Gartner andotheranalysts
  • Webinar Apache Camel Grundlagen Teil 2

    1. 1. Apache Camel Grundlagen (Teil 2) Enterprise Integration PatternsTalend, Global Leader in Open Source Integration Solutions Bernhard Schuhmann Christian Schneider
    2. 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© Talend 2011 2
    3. 3. Webinarreihe Apache Camel Grundlagen Teil 1: Erste Schritte mit Apache Camel Teil 2: Enterprise Integration Patterns Teil 3: Apache Camel für Fortgeschrittene
    4. 4. Global leader in open source integration Investoren Standorte Firmensitz Talend weltweit… 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 2011 4
    5. 5. Rückblende  Erste Schritte  Unsere erste Camel Applikation  Die Konzepte von Camel  Typische Use Cases© Talend 2011 5
    6. 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© Talend 2011 6
    7. 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© Talend 2011 7
    8. 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© Talend 2011 8
    9. 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) out in out in out in out Consumer Pipes and Filters EIP (Processors) Exchange Diagramm aus Camel in Action, © Manning 2011© Talend 2011 9
    10. 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)!© Talend 2011 10
    11. 11. Routen debuggen Um Routen zu debuggen, können Sie…  …mit einem vereinfachten Testfall beginnen  …Unit Tests (JUnit) nutzen  …das Test Kit von Camel nutzen http://camel.apache.org/testing.html  …“mock://...” Endpoints nutzen  …Logdateien und den “log://...” Endpoint nutzen  …Camel Tracer Interceptor nutzen http://camel.apache.org/tracer.html  …den Java Debugger einer IDE (z.B. Eclipse) nutzen  …Camel Debugger nutzen http://camel.apache.org/debugger.html  …die Funktionen von JMX und Notifications nutzen© Talend 2011 11
    12. 12. Genug der Theorie…
    13. 13. Enterprise Integration Patterns© Talend 2011 13
    14. 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© Talend 2011 14
    15. 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.© Talend 2011 15
    16. 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)© Talend 2011 16
    17. 17. Messaging Endpoints (Producers) 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 from("direct:start“).to("mock:result");© Talend 2011 17
    18. 18. Message Transformation 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?” 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")© Talend 2011 18
    19. 19. Message Transformation Content Enricher “Wie kann mit einem System kommuniziert werden, wenn der Sender nicht alle erforderlichen Daten hat?” from("direct:start") .enrich("direct:enrich", new AggregationStrategy() { @Override public Exchange aggregate(Exchange, Exchange) { Content Filter “Wie kann man die Verarbeitung umfangreicher Nachrichten vereinfachen, wenn nur wenige Daten relevant sind?”© Talend 2011 19
    20. 20. Message Transformation Envelope Wrapper “Wie können Bestandssysteme Nachrichten austauschen, die bestimmten Anforderungen, wie das Vorhandensein bestimmter Header oder Verschlüsselung, genügen müssen?” from("direct:set-body") .setBody().constant("Goodbye World") .setHeader("secret") from("direct:bean").to("bean:wrapperBean") from("direct:processor").process(PwrapperProcessor) N© Talend 2011 20
    21. 21. Message Transformation Message Filter “Wie kann eine Komponente vermeiden, uninteressante Nachrichten zu erhalten?” from("direct:start") .filter(header("rank").isGreaterThan("3"))© Talend 2011 21
    22. 22. Message Routing 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?” .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()© Talend 2011 22
    23. 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?”© Talend 2011 23
    24. 24. Message Routing 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?” from("direct:start") .split(body().tokenize("n“)) from("seda:aggregate") .aggregate(constant(true)).completionSize(2) .completionInterval(1000L).groupExchanges()© Talend 2011 24
    25. 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?”© Talend 2011 25
    26. 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")© Talend 2011 26
    27. 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)© Talend 2011 27
    28. 28. EIPs in der Praxis…
    29. 29. Vielen Dank für Ihre Aufmerksamkeit! Benutzen Sie bitte das Q&A Fenster, Sie können Fragen auch per E-Mail an webinar@talend.com stellen.© Talend 2011 29
    30. 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© Talend 2011 30
    31. 31. Vielen Dank!

    ×