apache-camel - features - apache camel vs kafka
Pasando valores entre procesadores en apache camel (4)
El Exchange se pasa entre los procesadores. Contiene propiedades, mensaje IN y mensaje OUT opcional. Cada uno de estos es capaz de almacenar datos de objetos, pero en general:
- use las Propiedades de Exchange para metadatos generales sobre el mensaje (se usa con menos frecuencia)
- use los encabezados de mensaje IN para configurar las propiedades del punto final o para metadatos sobre el cuerpo del mensaje (se usa a menudo)
- use el cuerpo del mensaje IN para la carga útil del mensaje (se utiliza con mayor frecuencia)
- cree un mensaje OUT solo si es necesario para mantener mensajes separados de IN vs. OUT durante el procesamiento (de forma predeterminada, solo se usa IN)
Dicho esto, realmente depende del componente llamado que sigue a su procesador. La mayoría tiene algunos encabezados y / o valores corporales que se requieren para usar el punto final, etc. Consulte la página del componente específico para estos detalles.
Además, el intercambio / mensaje se explican con más detalle en estas páginas:
http://fusesource.com/docs/router/2.8/prog_guide/MsgFormats-Exchanges.html
En apache camel, cuál de ellos es la mejor manera de pasar valores de un procesador de intercambio a otro (y por qué)
- almacenándolo en las cabeceras de intercambio
- usando el método
setProperty
mientras construimos la ruta. - de otra manera..
La respuesta está aquí:
Propiedades: las propiedades son un mapa y pueden parecer encabezados de mensajes. La principal diferencia es su duración: las propiedades existen durante toda la ejecución del intercambio, mientras que los encabezados están limitados a la duración del mensaje (y un mensaje puede cambiar mucho durante el enrutamiento, por lo que durante la ejecución del intercambio). El propio camello puede agregar algunas propiedades para algunos casos de uso.
Las propiedades y los encabezados son prácticamente iguales. Sin embargo, los encabezados se convierten a / desde encabezados específicos de protocolo en ciertos componentes, como Jms. Asi que,
- Metadatos dentro de una ruta: propiedades
- Metadatos a / desde el exterior: encabezados
Una distinción no mencionada por Ben y Petter es que las propiedades se almacenan de forma segura durante todo el proceso de procesamiento del mensaje en Camel. En contraste, los encabezados son parte del protocolo del mensaje y no pueden propagarse durante el enrutamiento. Por ejemplo, JMS tiene limitaciones en lo que puede almacenar como encabezados, etc.
Es posible que desee leer el capítulo 1 gratuito del libro Camel in Action, ya que cubre los conceptos de Camel con Exchange, Message, etc.