AXOPEN

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 !