Implementing Enterprise Integration Patterns with Apache Camel Herzlich Willkommen!
Über den Referenten Eduard Hildebrandt +49 (0 160) 8870983 +49 (0711) 72846627 [email_address] IT Consultant Architekt Berater EAI Coach SOA MDA
 
 
Definitionen Enterprise Application Integration (EAI)  ist ein Konzept zur unternehmensweiten  Integration  der  Geschäftsfunktionen  entlang der  Wertschöpfungskette , die über verschiedene  Applikationen  auf unterschiedliche  Plattformen  verteilt sind, und im Sinne der Daten- und Geschäftsprozessintegration  verbunden  werden können. Enterprise Integration Patterns  sind bewährte Lösungsschablonen zur Integration von Geschäftsfunktionen und Anbindung von verschiedenen Anwendungen auf unterschiedlichen Plattformen.  = Design Patterns  beschreiben bewährte  Lösungs-Schablonen  für ein Entwurfsproblem. Sie stellen damit  wiederverwendbare Vorlagen  zur Problemlösung dar, die in einem  spezifischen Kontext  einsetzbar sind.   +
Buchempfehlung Titel:  Enterprise Integration Patterns Autor:  Gregor Hohpe und Bobby Woolf Verlag:  Addison-Wesley ISBN:  0321200683
Messaging Nachricht Nachricht Channel Sender Empfänger data format dependencies location dependencies temporal dependencies
Was ist Apache Camel? http://activemq.apache.org/camel Open-Source Java Framework Implementiert ca. 35 Enterprise Integration Patterns Domain Specific Language (Fluent API)
Apache Camel Architecture http://activemq.apache.org/camel
Es war einmal… … vor nicht allzulanger Zeit … an einem wunderschönen Tag … ein IT-Architekt, der seinen  Einkauf  plante.
 
 
 
Einkaufsliste Kinderüberraschung Teddybär Malstifte Käse Brot Tomaten
Einkaufsliste mit Messaging… Channel Wünsche Ehefrau Sohn Tochter Wunsch Wunsch Wunsch ?
Einkaufsliste mit Apache Camel…
Pattern: Router Emfängt eine Nachricht von einem Channel und leitet diese  abhängig von bestimmten Kriterien  an einen anderen Channel weiter. Verändert nur das Ziel der Nachricht und  nicht den Inhalt der Nachricht . Sender 1 Output Channel 1 Router Output Channel 1 Sender Empfänger Empfänger Input Channel
Einsatz von Router Channel Wünsche Ehefrau Sohn Tochter Wunsch Wunsch Wunsch Channel Wünsche der Ehefrau Channel Wünsche des Sohnes Channel Wünsche der Tochter Router Invalid Messages
Router mit Apache Camel
Pattern: Message Translator Transformiert  von einem  Datenformat  in ein anderes Datenformat. Äquivalent zum  Adapter  Pattern für Nachrichten. Sender 1 Input Channel Translator Output Channel Sender Empfänger
Einsatz von Message Translator Channel Wünsche Ehefrau Sohn Tochter Wunsch Wunsch Wunsch Channel Wünsche der Ehefrau Channel Wünsche des Sohnes Channel Wünsche der Tochter Channel Wünsche im einheitlichen Format Router Invalid Messages Translator Translator Translator
Transformation der Nachrichten (Ehefrau) // CSV: Produkt,Anzahl Milch,2 <wish>   <productName>Milch</productName>   <quantity>2</quantity> </wish> Wunsch der Ehefrau: Translator Allgemeine Darstellung:
Transformation der Nachrichten (Sohn) // Java Serialization [binäre Daten] Wunsch des Sohns: <wish>   <productName>Kinderei</productName>   <quantity>2</quantity> </wish> Translator Allgemeine Darstellung:
Transformation der Nachrichten (Tochter) <wunsch>   <produkt>Teddybaer</produkt>   <anzahl>1</anzahl> </wunsch> Wunsch der Tochter: <wish>   <productName>Teddybaer</productName>   <quantity>1</quantity> </wish> Translator Allgemeine Darstellung:
Einsatz von Normalizer Channel Wünsche Ehefrau Sohn Tochter Wunsch Wunsch Wunsch Channel Wünsche der Ehefrau Channel Wünsche des Sohnes Channel Wünsche der Tochter Channel Normalisiert Wünsche Router Invalid Messages Translator Translator Translator Entspricht Normalizer Pattern
Pattern: Normalizer Transformiert Nachrichten  in unterschiedlichen Datenformaten in ein  einheitliches Datenformat . Verwendet intern einen  Message Router  und mehrere  Message Translators . Channel Sender A Sender B Sender C Channel Channel Channel Channel Router Invalid Messages Translator Translator Translator Normalizer
Einsatz von Normalizer Channel Wünsche Ehefrau Sohn Tochter Wunsch Wunsch Wunsch Normalizer
Normalizer mit Apache Camel
Pattern: Filter spezielle Art von einem  Router leitet nur Nachrichten weiter, die  bestimmten Kriterien  entsprechen hat im Gegensatz zu einem Router  nur einen Output-Channel Sender Channel Filter Channel Empfänger
Einsatz von Filter Channel Wünsche Ehefrau Sohn Tochter Wunsch Wunsch Wunsch Normalizer 1 2 3 1 3
Filter mit Apache Camel
Pattern: Aggregator spezieller,  zustandsbehafteter Filter identifiziert Nachrichten, die zueinander gehören sendet die  aggregierten Informationen  in einer eigenständigen  Nachricht weiter Empfänger Sender B Sender A Channel Channel Aggregator
Einsatz von Aggregator Channel Wünsche Ehefrau Sohn Tochter Wunsch Wunsch Wunsch Normalizer Filter Aggregator
Aggregator in Apache Camel <wishes> <wish>   <productName>Milch</productName>   <quantity>2</quantity> </wish>  <wish>   <productName>Brot</productName>   <quantity>1</quantity> </wish> <wish>   <productName>Tomaten</productName>   <quantity>3</quantity> </wish> … </wishes>
Einkaufsliste (sortiert) Lebensmittel- discounter Schreibwaren Spielzeug Teddybär Malstifte Bäckerei Kinderüberraschung Teddybär Malstifte Käse Tomaten Einkaufsliste Brot Käse Tomaten Brot Kinderüber-   raschung
Pattern: Splitter Teilt eine zusammengesetzte Nachricht  in eine Reihe einzelner Nachrichten  auf. Wird in der Regel mit einem  Router  eingesetzt. Request Channel Sender Empfänger B Empfänger A Router Splitter Channel Channel
Einsatz von Splitter Channel Wünsche Ehefrau Sohn Tochter Wunsch Wunsch Wunsch Normalizer Filter Aggregator Splitter http://family-hildebrandt.com/eduard/eip_with_apache_camel/ Example Source Code:
Wo kann Apache Camel eingesetzt werden? Enterprise Service Bus (z.B. ServiceMix) Messaging System (z.B. Active MQ) Service Runtime (z.B. Apache CXF) Ihre eigenen Java Anwendung (mit oder ohne Spring Framework)
Testen mit Apache Camel Mock Endpoint  ermöglichen das Testen ob: korrekter  Anzahl von Nachrichten  emfangen wurde korrekter  Payload , in richtiger Reihenfolge emfangen wurde die Nachrichten  bestimmten Bedinungen  (XPath) entsprechen
Dokumentation mit Apache Camel Generierung von Dokumentation mit einem  Maven Plugin Visualisierung  des Nachrichtenflusses mit GraphViz unterstützt HTML, PNG, SVG
Warum EIP und Apache Camel? Damit das nicht mit Ihrer Architektur passiert!
Denn dies führt in der Regel dazu:
Setzen Sie statt dessen Enterprise Integration Patterns ein… Channel Wünsche Ehefrau Sohn Tochter Wunsch Wunsch Wunsch Channel Wünsche der Ehefrau Channel Wünsche des Sohnes Channel Wünsche der Tochter Channel Wünsche im einheitlichen Format Router Invalid Messages Translator Translator Translator … und dokumentieren Sie Ihre Architektur!
Das spart Ihnen… Zeit Geld
Denken Sie lieber über die wirklich wichtigen Dinge nach!
Fazit 1. In der Realität ist Enterprise Integration  anspruchsvoll! 2. Enterprise Integration Patterns sind bewährte   Lösungs-Schablonen. Nutzen Sie diese! 3. Apache Camel ist ein hervorragendes   Integration Framework. Testen Sie es! 4. Lassen Sie sich beraten!
 
Eduard Hildebrandt +49 (0160) 8870983 +49 (0711) 72846627 [email_address] IT Consultant
www.logica.com/de No.  6 June 2009 Guidelines & Samples Logica is a leading IT and business services company, employing 39,000 people across 36 countries. It provides business consulting, systems integration, and IT and business process outsourcing services. Logica works closely with its customers to release their potential – enabling change that increases their efficiency, accelerates growth and manages risk. It applies its deep industry knowledge, technical excellence and global delivery expertise to help its customers build leadership positions in their markets. Logica is listed on both the London Stock Exchange and Euronext (Amsterdam) (LSE: LOG; Euronext: LOG). More information is available at www.logica.com.

Implementing Enterprise Integration Patterns with Apache Camel

  • 1.
    Implementing Enterprise IntegrationPatterns with Apache Camel Herzlich Willkommen!
  • 2.
    Über den ReferentenEduard Hildebrandt +49 (0 160) 8870983 +49 (0711) 72846627 [email_address] IT Consultant Architekt Berater EAI Coach SOA MDA
  • 3.
  • 4.
  • 5.
    Definitionen Enterprise ApplicationIntegration (EAI) ist ein Konzept zur unternehmensweiten Integration der Geschäftsfunktionen entlang der Wertschöpfungskette , die über verschiedene Applikationen auf unterschiedliche Plattformen verteilt sind, und im Sinne der Daten- und Geschäftsprozessintegration verbunden werden können. Enterprise Integration Patterns sind bewährte Lösungsschablonen zur Integration von Geschäftsfunktionen und Anbindung von verschiedenen Anwendungen auf unterschiedlichen Plattformen. = Design Patterns beschreiben bewährte Lösungs-Schablonen für ein Entwurfsproblem. Sie stellen damit wiederverwendbare Vorlagen zur Problemlösung dar, die in einem spezifischen Kontext einsetzbar sind. +
  • 6.
    Buchempfehlung Titel: Enterprise Integration Patterns Autor: Gregor Hohpe und Bobby Woolf Verlag: Addison-Wesley ISBN: 0321200683
  • 7.
    Messaging Nachricht NachrichtChannel Sender Empfänger data format dependencies location dependencies temporal dependencies
  • 8.
    Was ist ApacheCamel? http://activemq.apache.org/camel Open-Source Java Framework Implementiert ca. 35 Enterprise Integration Patterns Domain Specific Language (Fluent API)
  • 9.
    Apache Camel Architecturehttp://activemq.apache.org/camel
  • 10.
    Es war einmal…… vor nicht allzulanger Zeit … an einem wunderschönen Tag … ein IT-Architekt, der seinen Einkauf plante.
  • 11.
  • 12.
  • 13.
  • 14.
    Einkaufsliste Kinderüberraschung TeddybärMalstifte Käse Brot Tomaten
  • 15.
    Einkaufsliste mit Messaging…Channel Wünsche Ehefrau Sohn Tochter Wunsch Wunsch Wunsch ?
  • 16.
  • 17.
    Pattern: Router Emfängteine Nachricht von einem Channel und leitet diese abhängig von bestimmten Kriterien an einen anderen Channel weiter. Verändert nur das Ziel der Nachricht und nicht den Inhalt der Nachricht . Sender 1 Output Channel 1 Router Output Channel 1 Sender Empfänger Empfänger Input Channel
  • 18.
    Einsatz von RouterChannel Wünsche Ehefrau Sohn Tochter Wunsch Wunsch Wunsch Channel Wünsche der Ehefrau Channel Wünsche des Sohnes Channel Wünsche der Tochter Router Invalid Messages
  • 19.
  • 20.
    Pattern: Message TranslatorTransformiert von einem Datenformat in ein anderes Datenformat. Äquivalent zum Adapter Pattern für Nachrichten. Sender 1 Input Channel Translator Output Channel Sender Empfänger
  • 21.
    Einsatz von MessageTranslator Channel Wünsche Ehefrau Sohn Tochter Wunsch Wunsch Wunsch Channel Wünsche der Ehefrau Channel Wünsche des Sohnes Channel Wünsche der Tochter Channel Wünsche im einheitlichen Format Router Invalid Messages Translator Translator Translator
  • 22.
    Transformation der Nachrichten(Ehefrau) // CSV: Produkt,Anzahl Milch,2 <wish> <productName>Milch</productName> <quantity>2</quantity> </wish> Wunsch der Ehefrau: Translator Allgemeine Darstellung:
  • 23.
    Transformation der Nachrichten(Sohn) // Java Serialization [binäre Daten] Wunsch des Sohns: <wish> <productName>Kinderei</productName> <quantity>2</quantity> </wish> Translator Allgemeine Darstellung:
  • 24.
    Transformation der Nachrichten(Tochter) <wunsch> <produkt>Teddybaer</produkt> <anzahl>1</anzahl> </wunsch> Wunsch der Tochter: <wish> <productName>Teddybaer</productName> <quantity>1</quantity> </wish> Translator Allgemeine Darstellung:
  • 25.
    Einsatz von NormalizerChannel Wünsche Ehefrau Sohn Tochter Wunsch Wunsch Wunsch Channel Wünsche der Ehefrau Channel Wünsche des Sohnes Channel Wünsche der Tochter Channel Normalisiert Wünsche Router Invalid Messages Translator Translator Translator Entspricht Normalizer Pattern
  • 26.
    Pattern: Normalizer TransformiertNachrichten in unterschiedlichen Datenformaten in ein einheitliches Datenformat . Verwendet intern einen Message Router und mehrere Message Translators . Channel Sender A Sender B Sender C Channel Channel Channel Channel Router Invalid Messages Translator Translator Translator Normalizer
  • 27.
    Einsatz von NormalizerChannel Wünsche Ehefrau Sohn Tochter Wunsch Wunsch Wunsch Normalizer
  • 28.
  • 29.
    Pattern: Filter spezielleArt von einem Router leitet nur Nachrichten weiter, die bestimmten Kriterien entsprechen hat im Gegensatz zu einem Router nur einen Output-Channel Sender Channel Filter Channel Empfänger
  • 30.
    Einsatz von FilterChannel Wünsche Ehefrau Sohn Tochter Wunsch Wunsch Wunsch Normalizer 1 2 3 1 3
  • 31.
  • 32.
    Pattern: Aggregator spezieller, zustandsbehafteter Filter identifiziert Nachrichten, die zueinander gehören sendet die aggregierten Informationen in einer eigenständigen Nachricht weiter Empfänger Sender B Sender A Channel Channel Aggregator
  • 33.
    Einsatz von AggregatorChannel Wünsche Ehefrau Sohn Tochter Wunsch Wunsch Wunsch Normalizer Filter Aggregator
  • 34.
    Aggregator in ApacheCamel <wishes> <wish> <productName>Milch</productName> <quantity>2</quantity> </wish> <wish> <productName>Brot</productName> <quantity>1</quantity> </wish> <wish> <productName>Tomaten</productName> <quantity>3</quantity> </wish> … </wishes>
  • 35.
    Einkaufsliste (sortiert) Lebensmittel-discounter Schreibwaren Spielzeug Teddybär Malstifte Bäckerei Kinderüberraschung Teddybär Malstifte Käse Tomaten Einkaufsliste Brot Käse Tomaten Brot Kinderüber- raschung
  • 36.
    Pattern: Splitter Teilteine zusammengesetzte Nachricht in eine Reihe einzelner Nachrichten auf. Wird in der Regel mit einem Router eingesetzt. Request Channel Sender Empfänger B Empfänger A Router Splitter Channel Channel
  • 37.
    Einsatz von SplitterChannel Wünsche Ehefrau Sohn Tochter Wunsch Wunsch Wunsch Normalizer Filter Aggregator Splitter http://family-hildebrandt.com/eduard/eip_with_apache_camel/ Example Source Code:
  • 38.
    Wo kann ApacheCamel eingesetzt werden? Enterprise Service Bus (z.B. ServiceMix) Messaging System (z.B. Active MQ) Service Runtime (z.B. Apache CXF) Ihre eigenen Java Anwendung (mit oder ohne Spring Framework)
  • 39.
    Testen mit ApacheCamel Mock Endpoint ermöglichen das Testen ob: korrekter Anzahl von Nachrichten emfangen wurde korrekter Payload , in richtiger Reihenfolge emfangen wurde die Nachrichten bestimmten Bedinungen (XPath) entsprechen
  • 40.
    Dokumentation mit ApacheCamel Generierung von Dokumentation mit einem Maven Plugin Visualisierung des Nachrichtenflusses mit GraphViz unterstützt HTML, PNG, SVG
  • 41.
    Warum EIP undApache Camel? Damit das nicht mit Ihrer Architektur passiert!
  • 42.
    Denn dies führtin der Regel dazu:
  • 43.
    Setzen Sie stattdessen Enterprise Integration Patterns ein… Channel Wünsche Ehefrau Sohn Tochter Wunsch Wunsch Wunsch Channel Wünsche der Ehefrau Channel Wünsche des Sohnes Channel Wünsche der Tochter Channel Wünsche im einheitlichen Format Router Invalid Messages Translator Translator Translator … und dokumentieren Sie Ihre Architektur!
  • 44.
  • 45.
    Denken Sie lieberüber die wirklich wichtigen Dinge nach!
  • 46.
    Fazit 1. Inder Realität ist Enterprise Integration anspruchsvoll! 2. Enterprise Integration Patterns sind bewährte Lösungs-Schablonen. Nutzen Sie diese! 3. Apache Camel ist ein hervorragendes Integration Framework. Testen Sie es! 4. Lassen Sie sich beraten!
  • 47.
  • 48.
    Eduard Hildebrandt +49(0160) 8870983 +49 (0711) 72846627 [email_address] IT Consultant
  • 49.
    www.logica.com/de No. 6 June 2009 Guidelines & Samples Logica is a leading IT and business services company, employing 39,000 people across 36 countries. It provides business consulting, systems integration, and IT and business process outsourcing services. Logica works closely with its customers to release their potential – enabling change that increases their efficiency, accelerates growth and manages risk. It applies its deep industry knowledge, technical excellence and global delivery expertise to help its customers build leadership positions in their markets. Logica is listed on both the London Stock Exchange and Euronext (Amsterdam) (LSE: LOG; Euronext: LOG). More information is available at www.logica.com.