Integrationsmuster am Beispiel von Apache Camel

Ähnliche Dokumente
Gemusterte Kamele. Systemintegration mit Java und Apache Camel. Tobias Israel

Implementing Enterprise Integration Patterns with Apache Camel

Ora Education GmbH. Lehrgang: Oracle WebLogic Server 11g: Advanced Administration

Abschlusspräsentation Projekt Loan Broker mit BizTalk 2010

Ein Vergleich zwischen SCA,JBI und WCF. Marcello Volpi

Eine Anwendung mit InstantRails 1.7

Anleitung Grundsetup C3 Mail & SMS Gateway V

SAP NetWeaver Gateway. 2013

arlanis Software AG SOA Architektonische und technische Grundlagen Andreas Holubek

THEMA: "SAS STORED PROCESSES - SCHNELL GEZAUBERT" HELENE SCHMITZ

TYPO3 Slide Lightwerk GmbH

Database Change Management für Continuous Delivery. Diana Lander und Andreas Falk NovaTec Consulting GmbH

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen

RESTful Web. Representational State Transfer

Mobile App Development. - Alarm -

Übung: Verwendung von Java-Threads

Installation der SAS Foundation Software auf Windows

INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

Content Management System mit INTREXX 2002.

Die Bürgerstiftung im Internet

Administrator Handbuch

Relution Enterprise App Store. Mobilizing Enterprises. 2.6 Release Note

XMPP: Extensible Messaging and Presence Protocol

Smap3D PDM 10. Installation. Stand-Alone-Migration-Analyzer

INHALT 1. INSTALLATION DES V-MODELL XT UNTER WINDOWS 7 2. INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

Konzept zur Migration Joomla auf Version 3.x

Endpoint Web Control Übersichtsanleitung. Sophos Web Appliance Sophos Enterprise Console Sophos Endpoint Security and Control

Lizenzierung von System Center 2012

MOC Entwicklung von ASP.NET MVC 4 Webapplikationen

= Smart Enterprise Application Integration

BPMN verdrängt die EPK? Warum BPMN alleine nicht reicht

XML Content Management in der technischen Redaktion 6. Publishers Forum

Konzept zur Push Notification/GCM für das LP System (vormals BDS System)

Übungen zur Softwaretechnik

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Installation des CMS-Systems Contao auf einem Windows-Rechner mit XAMPP

Lokale Installation von DotNetNuke 4 ohne IIS

Die Bürgermeister App. Mein Bürgermeister hört mich per App.

MSXFORUM - Exchange Server 2003 > Konfiguration Sender ID (Absendererkennu...

Auszug aus JAX-WS Folien

FÉDÉRATION INTERNATIONALE DE SKI INTERNATIONAL SKI FEDERATION INTERNATIONALER SKI-VERBAND

Haben Sie schon einmal aus einem ScreenCobol Requestor ein Java Programm aufgerufen?

Jeopardy and andere Quizformate im bilingualen Sachfachunterricht Tipps zur Erstellung mit Powerpoint

Anleitung für CleverReach

e-books aus der EBL-Datenbank

CVR Seniorentreff vom 04. und Serienbriefe/Seriendruck. Serienbriefe / Seriendruck

So stellen Anfänger eine Website online! Joachim Kirchner Tel.: r

Neuerungen PRIMUS 2014

XMLBeam. Einfach XML-Handling. W3L AG

Database Exchange Manager. Infinqa IT Solutions GmbH, Berlin Stralauer Allee Berlin Tel.:+49(0) Fax.:+49(0)

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Projekt: RFC to FTP. Szenario der serviceorientierten Anwendungsintegration. Sebastian Altendorf Dirk Brillski David Gebhardt

Best Practice: Integration von RedDot mit Livelink DM im Intranet/Extranet

Anleitung. Integration von Kentix Geräten in den OpManager

SL PROVISOR Automation in der Qualitätssicherung sinnvoll erhöhen

LOG-FT BAG Filetransfer zum Austausch mit dem Bundesamt für Güterverkehr (BAG) Kurzanleitung

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten

Unified Communications & Collaboration

Business Application Framework für SharePoint Der Kern aller PSC-Lösungen

Leitfaden zur Nutzung von binder CryptShare

Software-Architekturen für das E-Business

Geany Just Not Another Editor

Warum sich das Management nicht für agile Softwareentwicklung interessieren sollte - aber für Agilität

Man liest sich: POP3/IMAP

CENIT SERVICEMANAGER Pluscard, Saarbrücken Dirk Günther, Produktmanager ECM R&D

News actum consulting products GmbH. Alle Rechte vorbehalten.

Xcode/Cocoa/Objective-C Crashkurs Programmieren unter Mac OS X

Nutzung dieser Internetseite

SE2-10-Entwurfsmuster-2 15

Tipps und Tricks zu Netop Vision und Vision Pro

Mobiles SAP für Entscheider. Permanente Verfügbarkeit der aktuellen Unternehmenskennzahlen durch den mobilen Zugriff auf SAP ERP.

WebService in Java SE und EE

Evaluation of Java Messaging Middleware as a Platform for Software Agent Communication

Einbindung einer ACT!12-16 Datenbank als Datenquelle für den Bulkmailer 2012

Verteilte Systeme: Übung 4

Restore Exchange Server 2007 SP2

Microsoft SharePoint. share it, do it!

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Java Entwicklung für Embedded Devices Best & Worst Practices!

bilder.tibs.at Upload-Assistent

bix BOE Java Tools bix Consulting GmbH & Co. KG BusinessITPeople

Datenhaltung für Android Model First Christian Ingenhaag, Frederik Götz, Carl Steeg

Acht Gute Gründe für Integration und einen Content Backbone

MailUtilities: Remote Deployment - Einführung

RT Request Tracker. Benutzerhandbuch V2.0. Inhalte

Webseiten und Web-Apps grafisch gestalten mit HTML5 Canvas ohne Flash und sonstige Tools

Mit dem Podcasten starten: So konfigurierst Du das Wordpress-Plugin Podlove Publisher

trivum Multiroom System Konfigurations- Anleitung Erstellen eines RS232 Protokolls am Bespiel eines Marantz SR7005

Themen heute (Tag 5)

Der Jazz Veranstaltungskalender für Deutschland, Österreich und die Schweiz

1.3 MDM-Systeme KAPITEL 1 ZAHLEN UND FAKTEN

Materialupload. Verwalten von Unterrichtsmaterialien. über das STiNE-Webportal. Universität Hamburg Tor zur Welt der Wissenschaft

Was ist Windows Azure? (Stand Juni 2012)

Systembeschreibung. Masterplan Kommunikationsinterface. ASEKO GmbH. Version 1.0 Status: Final

Anwendungsbeispiele Buchhaltung

Transkript:

Integrationsmuster am Beispiel von Apache Camel @berlin.jar buschmais GbR Inhaber Torsten Busch, Frank Schwarz, Dirk Mahler und Tobias Israel Adresse Leipziger Str. 93 01127 Dresden info@buschmais.de http://www.buschmais.de Berlin, 14.09.2008 1

buschmais GbR Leipziger Straße 93 01127 Dresden Tel +49 (0) 351 320 923-0 Fax +49 (0) 351 320 923-29 Mobil +49 (0) 177 198 441 9 tobias.israel@buschmais.com Tobias Israel Senior Consultant IT 2

Das Grundproblem: Die Monolithen sterben aus! Eine Applika5on = Viele Applika5onen Interak5on Koopera5on Verfügbarkeit... 3

Gute alte Bekannte Austausch von Dateien über das Dateisystem Gemeinsame Datenbank EnDernter Methodenaufruf Messaging 4

Messaging-Infrastruktur Message Bus Messaging Bridge Channel Adapder Dead LeHer / Invalid Message Channel... 5

Fire and Forget Sender Empfänger 6

Fire and Forget Sender Empfänger 6

Store and Forward Sender Empfänger 7

Store and Forward Sender Empfänger 7

Store and Forward Sender Empfänger 7

Store and Forward Sender Empfänger 7

Store and Forward Sender Empfänger 7

Store and Forward Sender Empfänger 7

Store and Forward Sender Empfänger 7

Store and Forward Sender Empfänger 7

Store and Forward Sender Empfänger 7

Pro Messaging Keine technologischen Details bei der Implemen5erung PlaKorm und sprachübergreifende Integra5on leicht umzusetzen Asynchrone Kommunika5on Maximaler Durchsatz aller Systeme möglich Möglichkeit zur Steuerung von Überlastsitua5onen Relieability mithilfe von Store and Forward Offlinemodus der Applika5on realisierbar 8

Contra Messaging Komplexeres Programmiermodell Erschwertes Debugging Problem mit Abhängigkeiten zwischen einzelnen Nachrichten Massendatenverarbeitung/ transfer nicht performant Vendor lock in über spezielle Middlewarelösungen 9

Welche Aspekte sind also zu betrachten? Architekturmuster für Messaging Infrastruktur AuYau und Erzeugung von Nachrichten Steuerung des Nachrichtentransports Ggf. Konver5erung von Nachrichten in verschiedene Formate Endpunktverhalten/ strategien Überwachung und Steuerung 10

Enterprise Integration Pattern Musterkatalog für Integra5onsszenarien auf Basis asynchronen Datenaustauschs Gängige Probleme werden auf Meta Ebene betrachtet und eine (Lösungs )Struktur vorgegeben Defini5on einer grafischen Nota5on zur Beschreibung/ Dokumenta5on 11

Notation Grundelemente Nachrichtenkanal Nachricht Komponente 12

Beispiel: Routing Slip 13

Aufbau des Musterkatalogs App.1 App. 2 14

Aufbau des Musterkatalogs Messaging Endpoints Message Endpoint Message Gateway Durable Subscriber... App.1 App. 2 14

Aufbau des Musterkatalogs Messaging Endpoints Message Endpoint Message Gateway Durable Subscriber... App.1 Message Construction Message Command Message Correlation Identifier... App. 2 14

Aufbau des Musterkatalogs Messaging Endpoints Message Endpoint Message Gateway Durable Subscriber... Messageing Channels Publish Subscribe Channel Message Bus Guaranteed Delivery... App.1 Message Construction Message Command Message Correlation Identifier... App. 2 14

Aufbau des Musterkatalogs Messaging Endpoints Message Endpoint Message Gateway Durable Subscriber... Messageing Channels Publish Subscribe Channel Message Bus Guaranteed Delivery... Message Routing Message Command Message Correlation Identifier... App.1 Message Construction Message Command Message Correlation Identifier... App. 2 14

Aufbau des Musterkatalogs Messaging Endpoints Message Endpoint Message Gateway Durable Subscriber... Messageing Channels Publish Subscribe Channel Message Bus Guaranteed Delivery... Message Routing Message Command Message Correlation Identifier... App.1 Message Construction Message Command Message Correlation Identifier... App. 2 Message Transformation Message Translator Normalizer Content Filter... 14

Aufbau des Musterkatalogs Messaging Endpoints Message Endpoint Message Gateway Durable Subscriber... Messageing Channels Publish Subscribe Channel Message Bus Guaranteed Delivery... Message Routing Message Command Message Correlation Identifier... App.1 Message Construction Message Command Message Correlation Identifier... App. 2 Message Transformation Message Translator Normalizer Content Filter... System Management Control Bus Wire Tap Message Store... 14

Apache Camel Vorgefer5gte Implemen5erung für die meisten Muster des Enterprise Integra5on PaHern Kataloges Subprojekt von Apache Ac5veMQ Aktueller Versionsstand 1.4 Apache License 2.0 15

Apache Camel Camel Runtime Routerprocessor Filterprocessor Camel Processors JMS File FTP Mail Camel Components JMS- Provider Filesystem Browser Integration Context 16

Apache Camel Camel Runtime JMS File FTP Mail Routerprocessor Filterprocessor Camel Camel Processors Camel Components JMS- Provider Filesystem Browser Integration Context 16

Wie man mit Camel arbeitet Mitgelieferte Komponenten Konfigura5on (fast) ohne Coding Fluent API Spring Beans XML Camel Laufzeitumgebung Standalone Integra5on in Ac5veMQ Integra5on in ServiceMix Integra5on in OpenESB... 17

Mit Camel Arbeiten 2 Verfügbare Komponenten (ein Auszug) ac5vemq camel camel atom camel cxf camel core (File, Log,...) camel fp... Ausdrücke formulieren XPath XQuery Groovy BeanShell SQL... 18

Integration in the small Gewöhnliches Javacoding Camel Laufzeitumgebung starten Endpunkte direkt im Code ergänzen CamelContext camelcontext = new DefaultCamelContext(); ProducerTemplate template = camelcontext.createproducertemplate(); camelcontext.addcomponent("log", new LogComponent()); camelcontext.addcomponent("file", new FileComponent()); camelcontext.start(); template.sendbody("log:com.buschmais.part2.easy", "Log this message"); template.sendbodyandheader("file://target/subfolder", "Save this message", FileComponent.HEADER_FILE_NAME, "CamelIntegration.log"); 19

Consumer Endpoints Reagieren und Verarbeiten verschiedener Events Bindung an einen definierten Endpunkt Konfigura5on Endpoint endpoint = camelcontext.getendpoint("file://target/subfolder? consumer.initialdelay=8000"); Consumer fileconsumer = endpoint.createconsumer(new Processor() { public void process(exchange exchange) throws Exception { template.sendbody("log:com.buschmais.integration", "New File detected."); } }); fileconsumer.start(); 20

Integration in the large Strikte Separa5on von Nachrichtenverarbeitung und Nachrichtentransport Defini5on von Rou5ngs (+ ggf. Metadaten der Nachricht) Fluent API = Konfigura5on auf die gute alte Java Tour Integra5on mit Spring und entsprechender Erweiterung der XML Bean Defini5on 21

Beispielmuster: Content Based Router 22

Fluent API public void configure() throws Exception { from("file://tmp/stat.xml").choice(). when(xpathbuilder.xpath("/status/priority = SEVERE ")). to("smtp://support@buschmais.com:25?password=somepass"). when(xpathbuilder.xpath("/status/priority = NORMAL ")). to("smpt://info@buschmais.com:25?password=somepass"). otherwise().to("log:com.buschmais.integration.camel"); } 23

Spring XML Extensions <camelcontext id="camel" xmlns="http://activemq.apache.org/camel/schema/spring"> <route> <from uri="file://tmp/stat.xml" /> <choice> <when> <xpath>/status/priority = 'SEVERE'</xpath> <to uri="smtp://support@buschmais.com:25?password=somepass" /> </when> <when> <xpath>/status/priority = 'NORMAL'</xpath> <to uri="smpt://info@buschmais.com:25?password=somepass" /> </when> <otherwise> <to uri="log:com.buschmais.integration.camel" /> </otherwise> </choice> </route> </camelcontext> 24

Testing MockComponent & MockEndpoint CamelContext camelcontext = new DefaultCamelContext(); MockEndpoint mockep = camelcontext.getendpoint("mock:checka", MockEndpoint.class); mockep.expectedbodiesreceived("messageid", "MessageRefId", "Priority"); mockep.expectedminimummessagecount(2); mockep.assertisnotsatisfied(); Unterstützung von JUnit Tests mit viel Basisfunk5onalität in Klasse ContextTestSupport 25

Tooling Maven Plugin Ausführen der Laufzeitumgebung Erstellen von Dokumenta5on entsprechend EIP PaHern <groupid>org.apache.camel</groupid> <artifactid>camel-maven-plugin</artifactid> 26

Beispielapplikation Webservice Translator Message Store 27

Zum Schluss wäre noch folgendes zu sagen Messaging ist ein alter (aber guter) Hut Im Projektalltag leider of: unstrukturiertes Vorgehen Integra5on auf Mikroebene viel handgestrickter Code wenig Kontrolle über Integra5onsumgebung Enterprise Integra5on PaHer können in vielen Fällen den Rahmen für erfolgreiche(re) Integra5onsprojekte geben AusdrucksmiHel für Integra5onsaufplanung LeiDaden für Realisierung Apache Camel als gute Vorlage ohne viel Handgestricktes nach den Integra5onsmustern zu arbeiten 28

Vielen Dank. 29

Referenzen Enterprise Integra5on PaHern: Gregor Hohpe, Bobby Woolf; Addison Wesley, 2004 Enterprise Integra5on PaHern Website: hhp:// www.eaipaherns.com/ Apache Camel Website: hhp://ac5vemq.apache.org/camel 30