Zoom sur Apache Camel

Faisant parti d’Apache Service Mix, Apache CAMEL est une des principales fonctionnalités de la célèbre solution Open Source.
Pierre LISERONMis à jour le 19 Juin 2015
apache.camel_.jpg

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. Cest pour cela que nous avons décidé de faire un petit topo fonctionnel pour revenir sur cet outil devenu incontournable !

Quest ce quApache CAMEL?

Le cœur du système CAMEL est un moteur de routage, et si lon veut être précis, je dirai même que c’est un constructeur de moteur de routage. Son 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 dautres termes, ceci implique que la conversion vers un format pivot quelconque pour transporter les données nest pas nécessaire. Et cette philosophie, on lapprouve !

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 larchitecture dApache CAMEL : 

architecture_camel-1024x458.jpg

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:

Quest 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.

Quest ce quun 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. 

camel_message-166x300.jpg

Architecture dun message CAMEL

Quest ce quun 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 

    exchange_camel-208x300.jpg

Architecture dun exchange CAMEL

Quest ce quun 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. 

    camel_context-300x169.jpg

Architecture dun CamelContext

Voilà, maintenant vous savez tout sur les principales fonctionnalités et les notions indispensables dApache CAMEL. Il ne vous reste plus quà lutiliser !