Your SlideShare is downloading. ×
0
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Webinar Apache Camel Grundlagen Teil 2
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Webinar Apache Camel Grundlagen Teil 2

2,044

Published on

- Testing …

- Testing
- Debugging
- Enterprise Integration Patterns
- Larger example

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,044
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
37
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • 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
  • Transcript

    • 1. Apache Camel Grundlagen (Teil 2) Enterprise Integration PatternsTalend, Global Leader in Open Source Integration Solutions Bernhard Schuhmann Christian Schneider
    • 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. Webinarreihe Apache Camel Grundlagen Teil 1: Erste Schritte mit Apache Camel Teil 2: Enterprise Integration Patterns Teil 3: Apache Camel für Fortgeschrittene
    • 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. Rückblende  Erste Schritte  Unsere erste Camel Applikation  Die Konzepte von Camel  Typische Use Cases© Talend 2011 5
    • 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. 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. 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. 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. 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. 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. Genug der Theorie…
    • 13. Enterprise Integration Patterns© Talend 2011 13
    • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. EIPs in der Praxis…
    • 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. 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. Vielen Dank!

    ×