2012-01-20 58 views
2

首先我試圖做交易只在駱駝路線中使用過一次嗎?

  1. 我有我想從
  2. 預處理XML閱讀郵件,並在Exchange設置屬性
  3. 撥打一個MQ基本脫節HTTP請求從HTTP請求和從屬性
  4. 過程數據上的初始交換
  5. 把它放在一個出站消息隊列

我一直在環顧四周,以確認每次從最初的MQ中讀取一條消息,即將創建一個新的Exchange。我一直無法找到明確說明的任何內容,但我假設並在想知道是否有人可以證實或否認情況確實如此。

交易所是否只用過一次?並且一條路線是否爲每條信息創建一個新的交換?

謝謝!

編輯:當然,我的對然後立即googles和找到答案。是的,它是唯一的,我們在這裏找到了Exchange API的文檔http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Exchange.html

回答

3

大多數情況下,爲路由的每個消費者線程創建Exchange。我知道的一個例外是使用「直接」端點,它將重用現有的Exchange(如果已存在於請求中)...

例如,這兩條路由鏈接在一起(通過直接)。第一條路線將創建一個新的Exchange,並會將其傳遞給第二路線(見記錄;交換)...

from("direct:route1").log("route1.exchangeId=${exchangeId}").to("direct:route2"); 
from("direct:route2").log("route2.exchangeId=${exchangeId}"); 

但是,如果你與任何其他成分(SEDA,VM是對鏈在一起,activemq等),那麼將爲第二條路線創建一個新的Exchange。

from("seda:route1").log("route1.exchangeId=${exchangeId}").to("seda:route2"); 
from("seda:route2").log("route2.exchangeId=${exchangeId}");