2012-04-26 192 views
19

處理器之間傳遞值在apache的駱駝,其中那些的是從交換處理器到另一個(和爲什麼)傳遞值的最佳方式:在阿帕奇駱駝

  • 其存儲在交換報頭
  • 在建立路線時使用setProperty方法。
  • 另一種方式..

回答

22

屬性和頭都幾乎相同。但是,標題可以轉換爲某些組件(如Jms)上的協議特定標題。所以,

  • 的路線內的元數據:性能
  • 元數據/外部:不是Ben和皮特提到的頭
16

Exchange在處理器之間傳遞。它包含屬性,IN消息和可選的OUT消息。每個這些能夠存儲對象的數據,但在一般情況:

  • 使用Exchange屬性有關該消息的一般的元數據(不經常使用的)
  • 使用IN消息頭配置端點屬性或用於關於消息正文的元數據(經常使用)
  • 對消息的有效負載使用IN消息正文(最常使用)
  • 僅在必要時纔會創建OUT消息,以便在期間保持單獨的IN和OUT消息處理(默認情況下僅使用IN)

這就是說,它確實取決於處理器之後的組件。大多數都有一些使用端點所需的標題和/或正文值等。有關這些詳細信息,請參閱具體的component page

此外,Exchange /信息進行了更詳細在這些網頁上解釋說:

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

一個區別是性能安全存儲的整個期間,在駱駝中處理消息。相反,頭部是消息協議的一部分,並且在路由期間可能不會傳播。例如,JMS也有侷限性你可以存儲爲標題等

您可能需要爲它涵蓋了駱駝概念與Exchange,消息等來讀取駱駝的行動書的免費章節1

+10

+ 1這是一個重要的區別。一般來說,如果你想確定你所設置的數據會在你想要的地方結束,那麼我強烈建議你使用這些屬性。過去,我被燒燬了,有人在一條路徑的中間添加了一個JMS步驟,在這條路徑中,我將信息存儲在標題中,並且信息剛剛停止。 – 2012-08-05 22:11:20

+0

在JMS的情況下,屬性根本不會傳播,標題是推薦的傳遞日期。這不正確或我錯過了什麼? – 2014-05-11 23:09:45

+0

也許它的條款。 JMS body + properties是JMS條款。在駱駝上它的正文+郵件上的標題,以及Exchange上的屬性。駱駝映射body - > body,和headers - > JMS屬性。 – 2014-05-12 07:00:27