2012-03-08 98 views
0

我寫了一個組件(EHComponent)來爲其他組件(AComponent)進行錯誤處理。Apache Camel消息範圍

AComponent從隊列中讀取,遇到錯誤,並且如果拋出異常,則會收到一些關於錯誤集的標題,並調用.to(「error.queue」)將消息放到另一個隊列供EHComponent讀取。

的EHComponent檢查郵件頭指的是錯誤類型,採取相應的行動,設置一些附加的郵件標題(計數多少次該消息已經做了它對錯誤隊列)

的EHComponent設置該值,則調用一個.to(「Original.Queue」),這是AComponent讀取的。

問題還沒有解決,所以拋出了一個新的異常,所以這個相同的消息又經過了這個過程。

我遇到的問題是第二次通過,即使我認爲它是相同的消息,我設置的這些標題不存在。

我的印象是,消息頭在Camel中有些穩定,所以即使我在新的交換中,消息頭也會完好無損。我需要做些什麼來確保消息頭可以從路由的任何部分的任何組件訪問?

感謝

回答

0

頭是消息的一部分,因此其高達你的運輸保存頭。 因此,當你使用你的組件發送消息到隊列中時,確保你保存了頭文件。

但是,如果您在Exchange中存儲屬性,則它們將保留在Exchange的整個生命週期中。

+0

另請參閱有關在處理消息期間在Camel Message API上使用getIn vs getOut的常見問題解答:http://camel.apache.org/using-getin-or-getout-methods-on-exchange.html。 – 2012-03-09 05:09:42

相關問題