Camel-messages


Le modèle de messages de Camel

Camel utilise deux abstractions pour modéliser les messages:

org.apache.camel.Message : entité fondamentale contenant les données transportées et acheminées dans Camel. org.apache.camel.Exchange: L’abstraction Camel pour un échange de messages. Cet échange de messages comporte un message d’entrée et, en réponse, un message de sortie.

Message

Les messages sont les entités utilisées par les systèmes pour communiquer entre eux lors de l’utilisation de canaux de messagerie. Les messages circulent dans un sens, d’un expéditeur à un destinataire

Les messages sont des entités utilisées pour envoyer des données d'un système à un autre.

Les messages ont un body (payload, charge utile), des headers (entêtes) et des pièces jointes:

Un message peut contenir des headers, des pièces jointes et un body.

Les messages sont identifiés de manière unique avec un identifiant de type java.lang.String. L’unicité de l’identifiant est imposée et garantie par le créateur du message, il dépend du protocole et il n’a pas de format garanti. Pour les protocoles qui ne définissent pas de schéma d’identification de message unique, Camel utilise son propre générateur d’ID.

Headers et Body

Les headers sont des valeurs associées au message, telles que des identifiants d’expéditeur, des conseils sur l’encodage du contenu, des informations d’authentification, etc. Les entêtes sont des paires nom-valeur ; le nom est une chaine unique, insensible à la casse, et la valeur est de type java.lang.Object. Camel n’impose aucune contrainte sur le type des entêtes. Il n’y a pas non plus de contraintes sur la taille des entêtes ou sur le nombre d’entêtes inclus avec un message. Les entêtes sont stockés sous forme de dictionnaire dans le message. Un message peut également contenir des pièces jointes facultatives, qui sont généralement utilisées pour le service Web et les composants de messagerie.

Body

Le body est de type java.lang.Object, donc un message peut stocker n’importe quel type de contenu et n’importe quelle taille. Il appartient au concepteur de l’application de s’assurer que le destinataire peut comprendre le contenu du message. Lorsque l’expéditeur et le destinataire utilisent des formats de body différents, Camel fournit des mécanismes pour transformer les données dans un format acceptable, et dans ces cas, la conversion se produit automatiquement avec des convertisseurs de type.

Indicateur de défaut Les messages ont également un indicateur d’erreur. Quelques protocoles et spécifications, tels que les services Web SOAP, font la distinction entre les messages de sortie et les messages d’erreur. Ce sont tous deux des réponses valides à l’invocation d’une opération, mais cette dernière indique un résultat infructueux. En général, les pannes ne sont pas gérées par l’infrastructure d’intégration. Ils font partie du contrat entre le client et le serveur et sont gérés au niveau de l’application.

Exchange (Echange)

Lors du routage, les messages sont contenus dans un exchange.

Un exchange Camel a un ID, un MEP, une exception et des propriétés. Il a également un message d'entrée pour stocker le message entrant et un message de sortie pour stocker la réponse.

Accéder à la JavaDoc de la classe Exchange