Enterprise Application Integration mit Apache Camel. JUG Augsburg, Andreas Prüller

Ähnliche Dokumente
= Smart Enterprise Application Integration

Implementing Enterprise Integration Patterns with Apache Camel

Gemusterte Kamele. Systemintegration mit Java und Apache Camel. Tobias Israel

Integration ganz einfach mit Apache Camel

Integrationsmuster am Beispiel von Apache Camel

QBus Enterprise Service Bus. intersales Creating the Digital Enterprise

TRANSCONNECT. Webschnittstellen für die Cloud, IoT & Co.

P R A X I S B E R I C H T : D I G I T A L E T R A N S F O R M A T I O N M I T J B O S S F U S E & 3 S C A L E

FWP Aktuelle Technologien zur Entwicklung verteilter Java-Anwendungen. Sommersemester Michael Theis, Lehrbeauftragter 1

Java Web Services mit Apache Axis2 Entwickler

MyCoRe > V1.0: Technische Weiterentwicklung

Erfahrungsbericht zu JBoss SOA Platform 6 Tech Talk 2013, 17. Oktober 2013, Bern

Projektgruppe. Thomas Kühne. Komponentenbasiertes Software Engineering mit OSGi

Business Process Management und Enterprise Service Bus

Die Nutzung von Webservices in der Oracle Datenbank. 11 März 2010

Axis2, CXF und JAX-WS RI im Vergleich

Christoph Mathas. SOA intern. » Praxiswissen zu Service-orientierten IT-Systemen HANSER

FWP Aktuelle Technologien zur Entwicklung verteilter Java-Anwendungen

1 Copyright 2011, Oracle and/or its affiliates. All rights reserved.

Integration von Web Services in J EE Anwendungen mit XFire. 1/26 André Janus - Integration von Web Services in J EE Anwendungen mit XFire

Martin Krasser & Christian Ohr ICW AG. Die Open ehealth Integration Platform (IPF)

Software-Architekturen für das E-Business

Web Services Die Definition von Web Services in der Theorie und FNT-Command als Web Service in der Praxis

ZenQuery - Enterprise Backend as a Service Single Page Applications mit AngularJS und Spring MVC. - Björn Wilmsmann -

Ein Vergleich zwischen SCA,JBI und WCF. Marcello Volpi

Aufbau einer Web 2.0 Community mit Grails. DOAG Konferenz + Ausstellung 2010 Nicole Hoock, esentri consulting GmbH

Softwareentwicklung mit Enterprise JAVA Beans

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

Komponentenorientierte Software-Entwicklung. Seite 1 / 42

Richard Oates Thomas Langer Stefan Wille Torsten Lueckow Gerald Bachlmayr. Spring & Hibernate. Eine praxisbezogene Einführung HANSER

Situation-Adaptive Multimodal Dialogue Platform. Übersicht

Vortrag. Thema: Apache Struts + Tiles

Dennis Schulte / Tobias Flohre codecentric AG. Enterprise Java Batch mit Spring

Integration im Enterprise Umfeld

Zukunft der Oracle Applikationsentwicklung: BC4J & XML

Spring Dynamic Modules for OSGi Service Platforms

OWASP Stammtisch München Sep 2014 XSS und andere Sicherheitslücken aus der Perspektive des Programmcodes

IUG DRESDEN ERSTELLUNG VON ROBUSTEN NATURAL SERVICES Software AG. All rights reserved. For internal use only

Schnell performante Web-Applikationen entwickeln. Markus Zapke-Gründemann LinuxTag 2012

Frühling für iphone-apps

Portale mit dem Java-Portlet-Standard JSR168, Jetspeed 2 und WSRP

Praktikum aus Softwareentwicklung 2. Web Services. Java Praktikum SS 2010

Axis2, CXF und JAX-WS RI im Vergleich

Integration von Java Legacy Code in die Fusion Middleware 11 mittels des SOA Suite Spring Components

Dieser Vortrag zeigt an Beispielen wie unterschiedliche Integrationsszenarien mit dem Oracle Service

Spring IDE. Christian Dupuis - Spring 2.0 Release Party

VAADIN, SPRING BOOT & REST

UML Modellierung und Model Driven Architecture (MDA) für Java mittels Rational Software Architect (RSA)

Java Web Services mit Apache Axis2

Tim Software-Architekt und Entwickler bei.

- Architektur & Integration -

Multi-Tool Testlandschaft mit DDS

Inhalt I. Blick in die Geschichte. .NET für kleine und grosse Applikationen

FWP Aktuelle Technologien zur Entwicklung verteilter Java-Anwendungen. Sommersemester Michael Theis, Lehrbeauftragter 1

<Insert Picture Here> Generierung von ADF-Applikationen aus Metadaten des Oracle Designer

<Insert Picture Here> Berichte à la carte - BI Publisher in eigene Anwendungen integrieren

XML Publisher die universelle Lösung für Geschäftsdokumente

Inhaltsverzeichnis. Bernd Weber, Patrick Baumgartner, Oliver Braun. OSGi für Praktiker

Xpert.IVY serviceorientierte Prozessanwendungen erstellen

Enterprise Application Integration Erfahrungen aus der Praxis

Entwicklung von Web-Anwendungen auf JAVA EE Basis

+++ Bitte nutzen Sie die integrierte Audio-Funktion von WebEx (Menü Audio -> Integrated Voice Conference -> Start auswählen), um uns zu hören!!!.

Server-Management mit JMX

Erfahrungen und Erkenntnisse. Klaus Richarz, HBT GmbH

Implementierung von Web Services: Teil I: Einleitung / SOAP

XML-Webservices & SOAP

StoneOne Web Service Factory Die moderne Enabling-Technologie für Ihre Business Services

Spring & Hibernate Eine praxisbezogene Einführung

Softwaretests mit Junit

Komponentenbasierte Softwareentwicklung

Open Source Frameworks

DOAG SIG Day. E-Business Suite und SOA: Was ist heute schon möglich? Thomas Karle PROMATIS software GmbH. Frankfurt 26. April 2007

Spring & Hibernate HANSER. Eine praxisbezogene Einführung. Richard Oates Thomas Langer Stefan Wille Torsten Lueckow Gerald Bachlmayr

Camel. Implementierung

Auszug aus Axis2 Schulung

Das Adapter Framework der SAP Exchange Infrastructure. Holger Kunitz, SAP AG

BPE-/BRE-Integration in agree. Systemarchitektur, Technologien, Konzepte

<Insert Picture Here> BI Publisher Berichte in eigene Anwendungen integrieren

Unternehmensdokumente mit dem XML Publisher erzeugen

Prozessautomatisierung mit BPMN 2.0 und Java.

Prozessautomatisierung mit BPMN 2.0 und Java.

Adobe Flex & Grails RIA, REST und XML

Web Services Monitoring

Use Cases für Change Data Streams Change Data Streams erstellen Change Data Capture mit Kafka (Connect) Demo. #Debezium

Mit dem Google-Web-Toolkit moderne Web-Anwendungen entwickeln

Enterprise Application Integration Spring Integration. Thomas Kruse

SOA Testing. Tobias Bosch OPITZ CONSULTING GmbH München

Comparing Software Factories and Software Product Lines

Softwareentwicklung in verteilten Umgebungen Middleware Case Studies (Coulouris et al., Kapitel 5 und 19) Dieter Schmalstieg Jens Grubert

Mail Integration Solution White Paper

5. Programmierschnittstellen für XML

Dirk Eismann Herrlich & Ramuschkat GmbH. Spring- und Flex- Integration

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

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

Templatebasierter CDA-Generator mit ART-DECOR. Vortrag im Rahmen der HL7 Austria Jahrestagung 2017, Wien Dipl.-Inform. Med.

Transkript:

Enterprise Application Integration mit Apache Camel JUG Augsburg, 17.11.2011 Andreas Prüller

Agenda Enterprise Application Integration Definition Enterprise Integration Patterns Beispiel Apache Camel Übersicht DSL Komponenten Datentransformation Errorhandling Testing

Noch nicht. Später! http://www.tamilchrist.ch/gallery/displayimage.php?album=1&pos=1

Enterprise Application Integration Enterprise Application Integration (EAI) is defined as the use of software and computer systems architectural principles to integrate a set of enterprise computer applications. (http://en.wikipedia.org) "EAI encompasses approaches, methodologies, standards, and technologies allowing very diverse but important systems to share information, processes, and behavior in support of the core business." (David S. Linthicum)

Enterprise Integration Patterns http://www.nlarchitects.nl/media/uploads/virtual_realities/thumbnails/minimum_speed_200_kmh jpg_1200x750_q85.jpg

Enterprise Integration Patterns Message Nachricht, die über einen Channel verschickt werden kann. Besteht aus Header und Body. Es gibt verschiedene Typen von Messages: Header Metadaten und Routinginformationen. Wird vom Messaging-System ausgewertet. Body Payload, wird in der Regel vom Messaging- System ignoriert und einfach übertragen.

Enterprise Integration Patterns Message Exchange Pattern (MEP) Definiert verschiedene Typen von Interaktionen zwischen den Systemen. Unter anderem wird der Typ der Messageverbindung festgelegt: One-way message (event message) Request-Response

Enterprise Integration Patterns Message Channel Messages werden über Message Channels übertragen. Der Message Channel (oder auch mehrere) werden vom Messagingsystem bereit gestellt. Spezialisierung: Dead Letter Channel Invalid Message Channel Datatype Channel

Enterprise Integration Patterns Message Endpoint Schnittstelle für Systeme zu einem Message Channel um Nachrichten senden und empfangen zu können. Der Message Endpoint kapselt das Messaging-System vom Rest der Applikation. Hier wird die abstrakte Messaging API auf den speziellen Anwendungfall hin implementiert. Bei Apache Camel sind in diesem Zusammenhang die Begriffe Consumer und Producer essentiell.

Enterprise Integration Patterns Consumer Consumer empfangen die Nachrichten. Dies kann auf verschiedene Arten geschehen: Event-Driven Consumer Wartet auf ein Event und tritt dann in Aktion; er ist damit ein asynchroner Empfänger. Polling Consumer Fragt in bestimmten Zeitintervallen sein Ziel ab, ob etwas Neues bereit liegt. Damit ist er ein synchroner Empfänger.

Enterprise Integration Patterns Message Router Verteilt Messages an Hand von bestimmten Regeln auf verschiedene Channels. Der Inhalt der Message wird dabei nicht verändert. Typen von Routern: Content-Based Router Context-Based Router Dynamic Router

Enterprise Integration Patterns Processor Manipuliert bzw. bearbeitet eine Message. Dies kann auch bedeuten dass Inhalte von anderen Quellen hinzuaggregiert oder Information unwiederbringlich gelöscht werden. Standardprozessoren sind beispielsweise: Content Filter Content Enricher Message Translator

Enterprise Integration Patterns Message Filter Den Message Filter kann man sich wie eine Spezialisierung des Content-Based Routers vorstellen, der ungewünschte Messages einfach verwirft (oder um beim Bild des Routers zu bleiben, auf den Null- Channel routet). Message Filter stellen eine einfache Lösung dar um das Anlegen von sehr vielen Channels zu verhindern. Es wird jedoch nur die Last auf die verarbeitenden Komponenten gedrosselt, nicht so sehr auf dem Messagingsystem selbst.

Enterprise Integration Patterns - Beispiel Data Sender Application Receiver Application

Enterprise Integration Patterns

Apache Camel http://www.tamilchrist.ch/gallery/displayimage.php?album=1&pos=1

Apache Camel Was ist Apache Camel? Open Source Integration Framework Routing-Engine Builder Was ist Apache Camel nicht? kein Enterprise Service Bus (ESB) Wo bekomme ich Apache Camel? http://camel.apache.org

Apache Camel Was ist der Kern von Apache Camel? Modulare und erweiterbare Architektur POJO model Riesige Komponentenbibliothek Enterprise Integration Patterns Domain Specific Language (DSL) Wobei nicht nur eine DSL angeboten wird, sondern diverse, wie z.b. Java, Spring oder Scala.

Apache Camel - Producer Konzepte in Camel: Producer Ein Producer ist eine Abstraktion in Camel. Er dient dazu Message Endpoints mit zu ihnen kompatiblen Inhalten zu versorgen. Damit kümmert sich der Producer um alle Konvertierungslogiken des Endpoints. Producer werden vom Endpoint erzeugt. FileProducer: schreibt den Body einer Nachricht in eine Datei JmsProducer: konvertiert die Camel-Message in eine Jms-Message und versendet diese

Apache Camel - Exchange Konzepte in Camel: Exchange Container für eine Message auf dem Channel und enthält zusätzlich MEP-Informationen. Exchange ID MEP Exception Properties (ähnlich dem Message Header, aber während der gesamten Exchange-Lebensdauer gültig) In Message Out Message (optional)

Apache Camel - Komponenten über 60 unterstützte Standardkomponenten, u.a.: ActiveMQ Atom Apache CXF DNS EJB 3.0 File FTP Google App Engine Hibernate HTTP Jetty JMX LDAP Lucene Nagios Quartz Restlet RSS SMTP TCP / UDP XMPP XSLT

Apache Camel - DSL Apache Camel und DSLs - Beispiele: Java: from("file:data/inbox").to("jms:queue:order") Spring DSL <route> <from uri="file:data/inbox"/> <to uri="jms:queue:order"/> </route> Scala DSL from "file:data/inbox" -> "jms:queue:order"

Apache Camel - Komponenten Einfaches Beispiel alle Dateien aus.../src/data/inbox lesen die Dateien nach.../src/data/outbox schreiben Mit Camel muss man keine einzige Zeile Code schreiben (wenn man will), es reichen etwa 30 Zeilen Spring-Konfiguration. siehe: Example 1

Apache Camel - Komponenten erweitern wir das Beispiel: alle Dateien aus.../src/data/inbox lesen die Datei nach.../src/data/outbox/xml schreiben, falls es eine XML-Datei ist die Datei nach.../src/data/outbox/csv schreiben, falls es eine CSV-Datei ist Lösung für das Problem: der MessageFilter siehe: Example 2 (Spring) siehe: Example 3 (POJO)

Apache Camel - Datentransformation Unterstützte Datenformate Bindy Castor Crypto CSV Flatpack GZip HL7 JAXB Jackson Protobuf SOAP Serialization TidyMarkup XmlBeans XMLSecurity XStream Zip CSV, FIX, fixed length XML Any CSV CSV Any HL7 XML JSON XML XML Object HTML XML XML XML, JSON Any

Apache Camel - Datentransformation Datentransformation mit XSLT XSLT ist nur eine Komponente, damit einfache Integration Beispiel: <route> <from uri="file://data/inbox"/> <to uri="xslt://resources/transform.xslt"/> <to uri="activemq:queue:transformed/> </route> XSL-Stylesheets können aus dem Classpath, vom Dateisystem oder von einer URL geladen werden.

Apache Camel - Datentransformation Datentransformation mit JAXB Definition der Entität etwa über Annotationen Bespiel einer Route: <dataformats> <jaxb id="jaxb" contextpath="demo"/> </dataformats> <route> <from uri="file://data/inbox"/> <marshal ref="jaxb"/> <to uri="activemq:queue:order"/> </route>

Apache Camel - Errorhandling Unterscheidung in zwei Fehlertypen: recoverable: der Fehler löst sich eventuell schnell von selbst (z. B. kurzzeitig nicht vorhandene Netzwerkverbindung) irrecoverable: der Fehler wird auch nach diversen Versuchen bestehen bleiben (z. B. Parsingfehler) kann während des Lebenszyklus eines Exchanges angewandt werden kann context-scoped oder route-scoped definiert werden

Apache Camel - Errorhandling Apache Camel bietet folgende Errorhandler: DefaultErrorHandler Dieser ist automatisch aktiv und muss nicht konfiguriert werden. DeadLetterChannel Implementierung des DeadLetter-Pattern TransactionErrorHandler DefaultErrorHandler erweitert um transactionawareness Diese drei erweitern den RedeliveryErrorHandler.

Apache Camel - Errorhandling NoErrorHandler Schaltet das Errorhandling komplett ab. LoggingErrorHandler Logt die Exception, keine weitere Fehlerbehandlung Diese zwei haben nur eine eingeschränkte Funktionalität, z. B. kein Redelivery. Der DefaultErrorHandler ist so konfiguriert, dass er kein Redelivery versucht und die Exception zurück an den Aufrufer gibt.

Apache Camel - Errorhandling Beispiel zum Errorhandling: Lesen eines Files Scoping der Errorhandler DefaultErrorHandler und DeadLetterChannel Redelivery siehe: Example 4

Apache Camel - Errorhandling Exception policies gesonderte Behandlung von spezifischen Exceptions dynamische Beeinflussung der Exceptionbehandlung zur Laufzeit Umleitung von Messages im Fehlerfall sehr mächtig, kann allerdings auch schnell zu einer Exception-Policy-Wüste führen

Apache Camel - Errorhandling Beispiel zu Exception policies: <camelcontext...> <onexception> <exception>javax.jms.jmsexception</exception> <handled><constant>true</constant></handled> <process ref="jmsexcptionhandler"/> </onexception> <route>... </route> </camelcontext...> <bean id="jmsexceptionhandler" class="..."/>

Apache Camel - Testing Unterstützung beim Testing: Apache Camel Test Kit Unterstützung bei der Erstellung von JUnit-Tests mit der Standard-JUnit-API Mock component zur einfachen Erstellung von Komponenten-Mocks Producer template zum einfachen Senden von Nachrichten in Testfällen

Apache Camel - Testing org.apache.camel.test.junit4.testsupport: Abstrakte Testklasse mit zusätzlichen Assertions org.apache.camel.test.junit4.cameltestsupport: Basistestklasse zum Test von Camel-Routen org.apache.camel.test.junit4. CamelSpringTestSupport: Basistestklasse zum Test von Camel-Routen, die in der Spring-DSL definiert sind. Enthält zusätzlich zu CamelTestSupport Spring-relevante Methoden.

Apache Camel - Testing Beispiel eines einfachen Tests mit der Routendefiniton in einem POJO siehe: Example 5 Beispiel eines Tests mit Routendefinition in Spring siehe: Example 6

Apache Camel

Ende Fragen? Fragen!