web-dev-qa-db-fra.com

Passage de valeurs entre processeurs dans Apache Camel

Dans Apache camel, quel est le meilleur moyen de transmettre les valeurs d'un processeur d'échange à un autre (et pourquoi):

  • le stocker dans les en-têtes d'échange
  • en utilisant la méthode setProperty lors de la construction de la route.
  • autrement..
23
kgautron

Les propriétés et les en-têtes sont à peu près les mêmes. Les en-têtes sont toutefois convertis en/à partir d'en-têtes spécifiques au protocole sur certains composants, tels que Jms. Alors, 

  • Métadonnées dans un itinéraire: propriétés
  • Méta-données vers/depuis l'extérieur: en-têtes
25
Petter Nordlander

Une distinction non mentionnée par Ben et Petter est que les propriétés sont stockées en toute sécurité pendant toute la durée du traitement du message dans Camel. En revanche, les en-têtes font partie du protocole de message et ne peuvent pas être propagés pendant le routage. Par exemple, JMS a des limitations concernant ce que vous pouvez stocker en tant qu'en-têtes, etc.

Vous voudrez peut-être lire le chapitre 1 gratuit du livre Camel in Action car il couvre les concepts de Camel avec Exchange, Message, etc.

48
Claus Ibsen

le Exchange est passé entre les processeurs. Il contient les propriétés, le message IN et le message OUT facultatif. Chacun de ceux-ci est capable de stocker des données d'objet, mais en général:

  • utiliser les propriétés Exchange pour les métadonnées générales sur le message (utilisées moins fréquemment)
  • utiliser les en-têtes de message IN pour configurer les propriétés des points de terminaison ou des métadonnées sur le corps du message (utilisé souvent)
  • utiliser le corps du message IN pour la charge utile du message (utilisé le plus souvent)
  • créer un message OUT uniquement si nécessaire pour conserver des messages IN distincts et différents lors du traitement (par défaut, seul IN est utilisé)

Cela dit, cela dépend vraiment du composant appelé suivant votre processeur. La plupart ont des en-têtes et/ou des valeurs de corps nécessaires pour utiliser le noeud final, etc. Voir la page composant spécifique pour ces détails.

En outre, l'échange/le message sont expliqués plus en détail sur ces pages:

http://camel.Apache.org/maven/current/camel-core/apidocs/org/Apache/camel/Exchange.html

http://fusesource.com/docs/router/2.8/prog_guide/MsgFormats-Exchanges.html

19
Ben ODay

La réponse est ici:

Propriétés: Les propriétés sont une carte et peuvent ressembler à des en-têtes de message La principale différence réside dans leur durée de vie: les propriétés existent pendant l'exécution de la totalitéexchange, alors que les en-têtes sont limités à la durée du message (un message Peut changer beaucoup pendant le routage, donc pendant l'exécution de l'échange). Camel Lui-même peut ajouter des propriétés pour certains cas d'utilisation.

0
Adam Ostrožlík