apache.camel_.jpg
logo Axopen

18+

années
d'expérience

60+

experts
techniques

150K

écoutes de notre podcast

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 LISERON
Mis à jour le 30 Avr 2024

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 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 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_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:

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. 

camel_message-166x300.jpg

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 

    exchange_camel-208x300.jpg

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. 

    camel_context-300x169.jpg

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 !

Pour aller plus loin

Souveraineté Numérique : pourquoi l'indépendance technologique est cruciale en 2024 ?

La souveraineté numérique est devenue un enjeu majeur dans un monde où les données et les infrastructures technologiques jouent un rôle central dans la vie quotidienne, aussi bien pour les individus que pour les entreprises ou les États. Concrètement, elle se définit comme la capacité à contrôler entièrement ses infrastructures sans dépendre de solutions étrangères. C’est un défi complexe à relever dans un contexte de mondialisation et d'interdépendance technologique croissante ! Pour les entreprises de développement, en particulier, cette souveraineté représente bien plus qu'une question de cybersécurité ou de protection des données personnelles : elle touche à l'indépendance technologique et à la maîtrise des outils stratégiques. Dans cet article, nous nous intéresserons à l’importance de la souveraineté numérique, notamment face à la domination des géants du cloud, et comment des pays comme la France tentent de préserver leur autonomie dans ce secteur.

Small right arrow

Comment bien cadrer un projet informatique ?

Chez AXOPEN, nous sommes convaincus que le cadrage de projet informatique est une des étapes les plus structurantes… et pourtant encore trop sous-estimée dans les projets IT. En effet, dans les projets informatiques, les dérives ne sont pas toujours dues à un bug ou à un mauvais choix technique. Bien souvent, le problème vient de plus loin : le projet était mal cadré dès le départ. Et pourtant, cette phase initiale est essentielle pour réussir un projet IT ! Dans cet article, on vous embarque dans la compréhension des fondamentaux du cadrage de projet informatique, et on vous donne aussi quelques tips de cadrage !

Small right arrow

React vs Angular

Frameworks : le comparatif entre React et Angular

Small right arrow