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 !
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 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é
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.
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.
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
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
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
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 !
Pourquoi et comment utiliser une solution d’API Management dans son système d’informations ?
Échanger des DTO adaptés à chaque besoin afin de retourner le moins de données possible
Face à l'explosion des coûts liés au cloud public, une nouvelle discipline s'impose : le FinOps. Dans un contexte où les entreprises adoptent massivement les infrastructures cloud pour leur flexibilité et leur scalabilité, les mauvaises surprises sur la facture sont malheureusement devenues monnaie courante. Optimiser ses dépenses cloud n'est plus un luxe, mais une nécessité pour garantir la rentabilité des projets et maitriser ses budgets IT. Mais pas de panique ! Cet article vous dévoile tout ce que vous devez savoir sur le FinOps, ses principes clés, et les bonnes pratiques pour maîtriser vos coûts tout en tirant le meilleur parti de vos ressources cloud.