Dans cet article


Offres d'emploi

Tags

Apache Camel

Apache Camel

Faisant parti d’Apache Service Mix, Apache CAMEL est une des principales fonctionnalités de la célèbre solution Open Source. Malgré la notoriété que CAMEL a su acquérir ces dernières années, certains éléments de cette solution restent flous. C’est pour cela que nous avons décidé de faire un petit topo fonctionnel pour revenir sur cet outil devenu incontournable !

Qu’est ce qu’Apache CAMEL?

Le cœur du système CAMEL est un moteur de routage, et si l’on veut être précis, je dirai même que c’est un constructeur de moteur de routageSon objectif est simple : exprimer facilement comment, à partir d’une source et de plusieurs destinations, le routage des messages est possible.

La philosophie de CAMEL repose sur le fait qu’il n’a pas d’apriori sur les données transportées. En d’autres termes, ceci implique que la conversion vers un format pivot quelconque pour transporter les données n’est pas nécessaire. Et cette philosophie, on l’approuve !

CAMEL est donc une couche d’abstraction de haut niveau qui permet de communiquer avec des systèmes variés sans se préoccuper des protocoles d’échanges.

Excepté le fait que CAMEL vient avec de nombreux connecteurs prêts à l’emploi pour tout type de système, il n’est reste pas moins très facilement extensible.

Attention !  CAMEL n’est pas un ESB car il n’offre pas de conteneur ou de système de bus de messagerie.

Ci-dessous l’architecture d’Apache CAMEL :

Architecture Apache CAMEL

Architecture Apache CAMEL

Pourquoi utiliser Apache CAMEL?

Tout simplement parce que Apache CAMEL offre des différentes possibilités :

  • Routage et médiation
  • EIP (Entreprise Integration patterns)
  • Domain-spécific language (DSL)
  • Librairies extensibles
  • Architecture modulaire
  • Approche POJO
  • Conversion automatique de types

Et des avantages non négligeables :

  • Très léger
  • Testable
  • Facilement configurable
  • Grande communauté

Apache CAMEL et les EIP:

Qu’est ce que les EIP?

Les EIP sont une tentative de formalisation pour les problèmes d’intégrations qui est historiquement apparue avec un livre de Gregor Hohpe et Bobby Woolf.

CAMEL est intrinsèquement lié à ces notions d’EIP puisque chaque route est un assemblage de plusieurs EIP. Ceci permet une écriture facile de route ainsi qu’un grande compréhension et maintenabilité.En effet, chaque EIP a la particularité de répondre à un besoin bien précis et donc permet de s’assurer d’utiliser la best practice pour résoudre le problème.

Notion des messages et exchanges dans Apache CAMEL

Dans CAMEL, il existe deux abstractions pour modéliser des messages:

org.apache.camel.Message:

C’est l’entité fondamentale contenant les données qui sont transférées et routées.

org.apache.camel.Exchange

C’est l’entité représentation un échange de message. Un Exchange possède donc un message in et un message out.

Qu’est ce qu’un message dans Apache CAMEL:

Les messages sont les entités véhiculées par le système pour faire communiquer ces systèmes entre eux.

Les messages sont constitués de:

  • un body (payload) (JAVA OBJECT)
  • des en-têtes (headers) (stockés dans une MAP)
  • des attachements (attachments)

Les messages sont identifiés par un identifiant unique de type STRING. La notion d’unicité de l’identifiant est assuré par l’appelant. C’est donc dépendant du protocole. Pour les protocoles qui n’ont pas d’identification unique, CAMEL utilise son générateur d’UID.

Architecture d'un message CAMEL

Architecture d’un message CAMEL

Qu’est ce qu’un Exchange?

Un exchange est un conteneur de messages pendant le routage.

Un exchange supporte un nombre varié d’interactions entre les systèmes (MEP – Message Exchange Pattern). Les MEPs sont utilisés pour différencier les messages one-way des messages requête – réponse.

  • InOnly – Message on-way (notion EVENT)
  • InOut – Message requête – réponse par exemple une requête HTTP.

Structure d’un exchange:

  • Exchange ID – A ID unique qui est souvent géré directement par CAMEL
  • MEP – Le pattern InOnly ou InOut
  • Exception – Si une erreur intervient alors elle sera chargée dedans
  • Properties – Comme les headers c’est à dire une MAP
  • In Message – Le message d’entrée
  • Out Message – Le message de sortie
Architecture d'un exchange CAMEL

Architecture d’un exchange CAMEL

Qu’est ce qu’un CamelContext?

La contexte CAMEL peut être vu comme le système de runtime de CAMEL.

Liste des services fournis par le CamelContext:

  • Components – Contient la liste des composants utilisés. CAMEL est capable de chargé ses composants à chaud.
  • Entpoints – Contient les endpoints qui ont été créés.
  • Routes – Contient les routes qui ont été ajoutés.
  • Type conveters – Contient le converteurs de types déjà utilisés.
  • Data formater – Contient les formats de données.
  • Registry – Contient le registre qui permet de chercher des BEANS. Par défaut, c’est un JNDI.
  • Languages – Contient les langues chargées.
Architecture d'un CamelContext

Architecture d’un CamelContext

Voilà, maintenant vous savez tout sur les principales fonctionnalités et les notions indispensables d’Apache CAMEL. Il ne vous reste plus qu’à l’utiliser !

L'équipe AXOPEN

Voir aussi les articles suivants

Apache ServiceMix

Apache ServiceMix

Le 09/06/2015 par Pierre Liseron

Dans un SI moderne, posséder un ESB de qualité est une obligation pour réussir sa transformation SOA. Seul bémol, face à la multitude de choix des ESB et les mauvaises expériences du passé, se lancer dans un tel projet peut paraître difficile. Heureusement, nous avons déniché la perle rare : Apache ServiceMix ! L’ESB Open Source Apache Service Mix Les ESB : une image jusqu’à présent plutôt négative Suite aux échecs retentissants de nombreux projets au sein des entreprises, les premières versions des logiciels d’EAI / ESB ne jouissent pas forcement d’une bonne réputation dans l’entreprise.
Lire l'article

NGINX – Retour d’expérience et limitation

Le 20/08/2014 par Pierre Liseron

NGINX est devenu sans conteste l’un des serveurs web les plus populaires essentiellement pour les raisons suivantes : Points forts NGINX C’est un serveur web est extrêmement rapide (Grace au pattern REACTOR) Nginx est très léger (Grace à son modèle Thread Driven) Nginx possède une configuration plus facile qu’APACHE car seuls les paramètres utiles sont disponibles. Pour réaliser la même configuration pour un site simple type WORDPRESS ou DRUPAL, la configuration NGINX est plus petite et donc plus lisible.
Lire l'article

Planisware : déterminer la version des différents composants d’un Intranet Server
Introduction Afin d’assurer une gestion de configuration efficace d’une application sous Planisware il est nécessaire de pouvoir identifier la version de chacun des composants techniques (version du noyau, version de l’applet, etc…). Cet article ne traite pas de la gestion des objets d’environnement (ou paramétrage) Planisware. Composant Exemple Noyau – version majeure P5 SP3 Noyau – version patch (« officiels »+deltas) Maintenance Pack 5.
Lire l'article