2012-04-26 11 views
19

In cammello apache, quale di questi è il modo migliore per passare i valori da un processore di scambio ad un'altra (e perché):valori Passando tra processori in cammello apache

  • riporlo in intestazioni cambio
  • utilizzando il metodo setProperty mentre si costruisce il percorso.
  • un altro modo ..

risposta

22

Proprietà e intestazioni sono praticamente la stessa. Le intestazioni, tuttavia, vengono convertite in/da intestazioni specifiche del protocollo su determinati componenti, come Jms. Così,

  • Meta dati all'interno di un percorso: proprietà
  • meta-dati a/da fuori: intestazioni
16

il Exchange è passato tra i processori. Contiene proprietà, messaggio IN e messaggio OUT opzionale. Ognuno di questi è in grado di memorizzare i dati di oggetto, ma in generale:

  • utilizzare le proprietà di Exchange per generale dei meta-dati sul messaggio (usato meno frequentemente)
  • utilizzare le intestazioni dei messaggi IN per configurare le proprietà endpoint o per metadati sul corpo del messaggio (utilizzato spesso)
  • utilizzare il corpo del messaggio IN per il payload del messaggio (utilizzato più spesso)
  • creare un messaggio OUT solo se necessario per mantenere separati messaggi IN e OUT durante elaborazione (per impostazione predefinita viene utilizzato solo IN)

Detto questo, dipende molto dal componente chiamato seguendo il processore. La maggior parte ha alcune intestazioni e/o valori corporei che sono richiesti per utilizzare l'endpoint, ecc. Vedere lo specifico component page per questi dettagli.

Inoltre, la Borsa/Messaggio sono illustrate più in dettaglio in queste pagine:

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

39

Una distinzione non menzionato da Ben e Petter è che le proprietà sono memorizzati in modo sicuro per tutta la durata dell'elaborazione del messaggio in Camel. Al contrario, le intestazioni fanno parte del protocollo del messaggio e non possono essere propagate durante il routing. Ad esempio, JMS ha dei limiti ciò che è possibile memorizzare le intestazioni ecc

Si consiglia di leggere il capitolo gratuito 1 del Cammello in azione libro in quanto copre i concetti cammello con Exchange, messaggio, ecc

+10

+ 1 Questa è una distinzione importante. In generale, se vuoi essere sicuro che i dati che stai impostando finiranno dove vuoi, allora ti consiglio vivamente di usare le proprietà. Sono stato bruciato da questo in passato, dove qualcuno ha aggiunto un passo JMS nel mezzo di un percorso lungo il quale stavo passando le informazioni memorizzate nelle intestazioni e le informazioni hanno appena smesso di attraversare. –

+0

In caso di JMS, le proprietà non vengono propagate affatto e le intestazioni sono il modo consigliato per passare il giorno. Non è corretto o mi manca qualcosa? –

+0

Forse sono i termini. Le proprietà di JMS body + sono i termini JMS.In Camel ha corpo + intestazioni su Messaggio e proprietà su Exchange. Corpo mappe cammello -> corpo e intestazioni -> Proprietà JMS. –

Problemi correlati