Apache Camel. Entreprise Integration Patterns. Raphaël Delaporte BreizhJUG 07.11.2011



Documents pareils
BPEL Orchestration de Web Services

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

Configuration Interface for MEssage ROuting

Introduction aux «Services Web»

Intégration de systèmes

Cours en ligne Développement Java pour le web

La démarche SOA et l interopérabilité applicative

Auto-évaluation Aperçu de l architecture Java EE

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. A308, Université de Paris 13

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Mettez les évolutions technologiques au service de vos objectifs métier

CQP Développeur Nouvelles Technologies (DNT)

Architecture SOA Un Système d'information agile au service des entreprises et administrations

Projet ESB - Retour d expérience

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

FOSS Enterprise Integration Plattaform

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Hébergement de site web Damien Nouvel

Introduction aux. services web 2 / 2

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Réseaux. 1 Généralités. E. Jeandel

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Les processus métiers : concepts, modèles et systèmes

IFIPS 5 / Nouvelles Architectures Logicielles Projet : Bus de web services avec «moteur» BPEL

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

Hassene BELGACEM. Expériences Professionnelles. JEE architect / Technical leader. Ingénieur Informatique. Cycle Préparatoire

Nouvelles technologies pour l intégration : les ESB

JavaServer Pages (JSP)

30 ans d ingénierie, 23 ans de conseil en architecture de SI

L Orchestration de Services Web avec Orchestra. Goulven Le Jeune Orchestra Project Manager

Urbanisme du Système d Information et EAI

Augmenter la disponibilité des applications JEE grâce au clustering : Le projet open source JShaft

Environnements de Développement

Mise en œuvre des serveurs d application

Architecture Orientée Service, JSON et API REST

Exécution de processus

Exécution de processus

Messagerie asynchrone et Services Web

Formation en Logiciels Libres. Fiche d inscription

NOVA BPM. «Première solution BPM intégr. Pierre Vignéras Bull R&D

Introduction aux Technologies de l Internet

Présentation d'un MOM open-source

Architectures web/bases de données

pythonocc: une plateforme de développement agile d applications CAO.

les techniques d'extraction, les formulaires et intégration dans un site WEB

JOnAS 5. Serveur d application d

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Compte Rendu d intégration d application

MQPerf un outil de diagnostic en mode SaaS des performances optimales du MOM JORAM

Mineure Architectures Orientées Services SOA Exécution de processus. Mineure SOA. Exécution de processus

CAHIER DES CHARGES D IMPLANTATION

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Description de la formation

Système d échange inter-administration avec Petals ESB

SQL Parser XML Xquery : Approche de détection des injections SQL

Business Process Execution Language

LE CENTRE DE RÉFÉRENCE PROFESSIONNELLE TIC DE BRUXELLES TAKE I.T. EASY FORMATION TECHNIQUES IT & WEB POUR INFORMATICIENS

Drive your success. «Un écosystème complexe implique une capacité de gestion temps réel des aléas»

ANALYSTE PROGRAMMEUR DIPLÔME D ÉTABLISSEMENT

Module BD et sites WEB

Composants Logiciels. Le modèle de composant de CORBA. Plan

Hébergement de sites Web

«Clustering» et «Load balancing» avec Zope et ZEO

Oléane VPN : Les nouvelles fonctions de gestion de réseaux. Orange Business Services

Intégration d'applications à "gros grain" Unité d'intégration : le "service" (interface + contrat)

Découverte de réseaux IPv6

LINUX REDHAT, SERVICES RÉSEAUX/INTERNET

SOAP Concepts Application à Glassfish

WHITE PAPER. Démocratiser l ESB

Auto-évaluation Programmation en Java

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

PROJET : ETNIC ESB JANUS. Guide technique : WS-Notification - Clustering. BULL Services et Solutions

! " # $ % & OPN Day Paris 14 mars 2006

De à 4 millions. Khanh Tuong

OASIS Date de publication

Conception Exécution Interopérabilité. Déploiement. Conception du service. Définition du SLA. Suivi du service. Réception des mesures

Architecture applicative et Cartographie

RMI le langage Java XII-1 JMF

Programme formation pfsense Mars 2011 Cript Bretagne

Spécifications Techniques Générales. Techno Pole Internet. Lycée Djignabo / Ziguinchor

Rapport de veille technologique

Présentation du ResEl

Architecture et Extensions d ArcGIS Server

Evolution et architecture des systèmes d'information, de l'internet. Impact sur les IDS. IDS2014, Nailloux 26-28/05/2014

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Le 09 et 10 Décembre 09

JOnAS 5 Enterprise OSGi javaee compliant

Intergiciel - concepts de base

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Ch2 La modélisation théorique du réseau : OSI Dernière maj : jeudi 12 juillet 2007

Simplifier l intégration des systèmes RH et garantir une version unique des données de l employé. D

Informatique en nuage Cloud Computing. G. Urvoy-Keller

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Web Tier : déploiement de servlets

Introduction à la plateforme J2EE

Jean-Philippe VIOLET Solutions Architect

SITE WEB E-COMMERCE ET VENTE A DISTANCE

Fouillez facilement dans votre système Big Data. Olivier TAVARD

Transcription:

Apache Camel & Entreprise Integration Patterns Raphaël Delaporte BreizhJUG 07.11.2011 1

Speaker CTO Zenika Ouest Consultant et formateur Responsable comité technique Architecture d'entreprise Domaine ESB / BPEL / SOA / Messaging / WebServices Membre comité technique OASIS AMQP Spécifications Votes 2

Petite précision... Apache Camel Framework Java Implémentation des EIP A ne pas confondre avec CAML... # let rec couple l1 l2 = # let match rec (l1, couple l2) l1 with l2 = match ([],_)(l1, (_,[]) l2) with -> [] (a([],_) :: q, b (_,[]) :: p) -> (a, [] b) :: couple q p;; (a :: q, b :: p) -> (a, b) :: couple q p;; 3

Entreprise Integration Patterns Mêmes concepts que les design patterns en conception objet Solutions éprouvées à un problème commun EIP = patterns orientés intégration d'applications Routage de messages Transformation de messages Gestion des messages Type de endpoints / channels 4

Entreprise Integration Patterns 5

Apache Camel Puissant framework Java d'intégration Implémentation des EIP Routage et médiation Création de règles DSL (Domain Specific Language) Configuration XML 6

Apache Camel 10 bonnes raisons d'adopter un chameau Excellent framework d'intégration Open source et gratuit (Apache Software Foundation) Support de 50 EIP Support de plus de 80 types de Endpoint (connecteurs) Création de règles très intuitives Basé sur le framework Spring Léger et puissant Excellente documentation Cycle très court de release Support de 19 langages (pour expressions et prédicats) 7

The Spaghettis Incident? 8

Fonctionnement de Camel Camel permet de relier des endpoints via des routes Statiques Dynamiques Simples Complexes Camel permet de définir des endpoints Associés à des ressources Physiques ou logiques Les endpoints et les routes sont définis dans le CamelContext (moteur Camel) 9

Fonctionnement de Camel Exemple de route DSL from("direct:orig").to("direct:dest"); from("direct:orig").to("direct:dest"); Définition et création du endpoint «direct:orig» Permet de relier les endpoints logiques Camel «direct:orig» au endpoint «direct:dest» Représente une route à part entière 10

Fonctionnement de Camel Une route DSL plus complexe... from("activemq:orig") from("activemq:orig").multicast("http:d1","jms:d2").to("vm:d3").multicast("http:d1","jms:d2").to("direct:d2").to("vm:d3").loop(3).to("direct:d2").loadbalancer().loop(3).loadbalancer().roundrobin().to("bean:d1","irc:d2");.roundrobin().to("bean:d1","irc:d2"); 11

Fonctionnement de Camel Définir les routes en DSL Hériter de la classe org.apache.camel.builder.routebuilder Redéfinir la méthode abstraite configure() Un point d'entrée unique from() pour chaque route import org.apache.camel.builder.routebuilder; import org.apache.camel.builder.routebuilder; public class MaRoute extends RouteBuilder { public class MaRoute extends RouteBuilder { @Override public @Override void configure() throws Exception { public from("direct:origine") void configure() throws Exception {.to("direct:destination"); from("direct:origine") }.to("direct:destination"); } } } 12

Démo 13

Fonctionnement de Camel Création des routes L'appel de la méthode from() (qui doit être unique au sein d'une route) retourne un «processor type» Ce processor est l'action suivante qui doit être effectuée pour poursuivre l'exécution de la route Différents processors existent par défaut (to, filter, etc.) Il est possible de définir ses propres processors 14

Les composants de Camel Camel propose une offre extrêmement complète Plus d'une quarantaine de composants ActiveMQ, AMQP, Atom, CXF, CXFRS, File, Freemarker, FTP, Gmail, HDFS, HTTP, Imap, IRC, JBI, JDBC, JMS, LDAP, Mail, Nagios, Pop, Printer, RMI, Servlet, SFTP, SMTP, SNMP, SQL, TCP, UDP, XMPP, etc. La liste mise à jour régulièrement http://camel.apache.org/component.html 15

Démo 16

Quelques endpoints... Endpoints de type ressource / protocole JMS File HTTP Endpoints logiques direct seda vm timer bean log 17

EIP Routage Simple 1 message à la fois stateless 1 message en sortie n messages en sortie 1 message 0 ou 1 message Parallèle Séquentiel Content based Router Message Filter Recipient List Splitter n messages à la fois statefull Moins de messages en sortie Aggregator Autant de message en sortie Resequencer Composé Parallèle Réparti les messages Composed Message Processor Diffuse les messages Scatter-Gather Prédéterminé, linéaire Routing Slip Séquentiel Possibilités infinies Process Manager 18

EIP Content Based Router Content Based Router Comment traiter une situation où l'implémentation d'une seule fonctionnalité est éparpillée sur plusieurs systèmes physiques? Routage basé sur le contenu Examine le contenu du message (headers ou body) Existence de champs Valeur de champs 19

Camel Content Based Router Content Based Router en Camel Permet de faire des choix basés sur des prédicats (conditions à satisfaire pour valider le test) choice().when(predicate).to(...).otherwise().to(...).end() choice().when(predicate).to(...).otherwise().to(...).end() Exemple from("seda:cbr") from("seda:cbr").choice().choice().when(header("ordertype").isequalto("gadget")).when(header("ordertype").isequalto("gadget")).to("seda:gadgetinventory").to("seda:gadgetinventory").when(header("ordertype").isequalto("widget")).when(header("ordertype").isequalto("widget")).to("seda:widgetinventory").to("seda:widgetinventory").otherwise().otherwise().to("seda:autre").end();.to("seda:autre").end(); 20

Camel Les prédicats Ensemble de conditions à évaluer Résultat binaire vrai ou faux (méthode matches) Très puissant pour créer les critères de routages Support de nombreux langages XPath, XQuery, Python, Groovy, etc. XPath import org.apache.camel.predicate; import import org.apache.camel.builder.xml.namespaces; org.apache.camel.predicate; import org.apache.camel.builder.xml.namespaces; Namespaces ns = new Namespaces("ns", "http://org.breizhjug"); Predicate Namespaces price ns = = new ns.xpath("/ns:order/ns:price/text()='10'"); Namespaces("ns", "http://org.breizhjug"); Predicate price = ns.xpath("/ns:order/ns:price/text()='10'"); 21

Camel Les prédicats La classe PredicateBuilder offre les fonctions élémentaires and, or, not, islessthan, isnull, regex, etc. Construction de prédicats import static org.apache.camel.builder.predicatebuilder.and; import import static static org.apache.camel.builder.xml.xpathbuilder.xpath; org.apache.camel.builder.predicatebuilder.and; import static org.apache.camel.builder.xml.xpathbuilder.xpath; Predicate price = xpath("/order/price/text()='10'"); Predicate Predicate ordertype price = xpath("/order/price/text()='10'"); = header("ordertype").isequalto("widget"); Predicate Predicate body ordertype = body().contains("camel"); = header("ordertype").isequalto("widget"); Predicate Predicate priceordertype body = body().contains("camel"); = and(price,ordertype); Predicate Predicate all priceordertype = and(body,priceordertype); = and(price,ordertype); Predicate all = and(body,priceordertype); 22

Démo 23

EIP Dynamic Router Dynamic Router Commenter éviter les dépendances du routeur sur toutes les destinations possibles, tout en maintenant son efficacité et sa maintenabilité? 24

Camel Dynamic Router Critères de routage calculés dynamiquement via une Expression (basé sur l'implémentation EIP Recipient List) recipientlist(expression) recipientlist(expression) public void configure() throws Exception { public from("seda:dynamicrouter") void configure() throws Exception { from("seda:dynamicrouter").recipientlist(new BeanExpression("dynamicRouter", "route")); }.recipientlist(new BeanExpression("dynamicRouter", "route")); } public String route(@xpath("/order/id") String orderid) { public return String "seda:out" route(@xpath("/order/id") + orderid; String orderid) { } return "seda:out" + orderid; } 25

EIP Possibilités infinies... Simple 1 message à la fois stateless 1 message en sortie n messages en sortie 1 message 0 ou 1 message Parallèle Séquentiel Content based Router Message Filter Recipient List Splitter n messages à la fois statefull Moins de messages en sortie Aggregator Autant de message en sortie Resequencer Composé Parallèle Réparti les messages Composed Message Processor Diffuse les messages Scatter-Gather Prédéterminé, linéaire Routing Slip Séquentiel Possibilités infinies Process Manager 26

Démo 27

EIP encore et encore... Régulateur de débit Temporisateur Répartiteur de charge Diffusion vers n récepteurs Répétition (throttler) (delayer) (loadbalancer) (multicast) (loop) 28

EIP et encore... Transactionnal client 29

Démo 30

Et Spring Integration dans tout ça? Spring Integration a une approche totalement différente Camel est route-oriented SI est composant-oriented (philosophie Spring) Syntaxe SI est 100% XML (pas de DSL) SI est plus fidèle aux définitions des EIP Message Channel Channel Adapter On retrouve les mêmes EIP de routage / transformation Aggregator, Splitter, Resequencer, Dynamic router 31

SI Concepts clés Type de Message channel Pollable channel Subscribable channel Intégration de beans Spring plus intuitive Gateway Service activator Notion native de Bridge Contrôleur de flux 32

Comparaison A fonctionnalités équivalentes SI est plus complexe à mettre en œuvre Moins intuitif Syntaxe XML obligatoire, plus verbeux Camel est plus plug'n'play 33

Démo 34

Questions? Merci! raphael.delaporte@zenika.com http://blog.zenika.com Et n'oubliez pas, nous vous attendons tous à la What's Next 2012 les 14 et 15 juin 35