2012-04-16 145 views
1

我試圖設置一些消息,當它通過駝峯DSL中的處理器引用時被操作的消息頭。然而,我所擁有的第一件事是.onCompletion的處理器,它應該從交換機讀取消息,獲取標題並記錄它們。onCompletion()命令在駝峯DSL中是否重要?

這是否必須在我的DSL最後?看起來,我的finaly .process()處理器可以看到我通過其餘代碼添加的所有新的標題值,但是當我將它們全部記錄在.onCompletion中時,這些標題的值爲空。它幾乎就像它有一個陳舊的消息或交換或什麼的版本。爲什麼會發生這種情況?

回答

0

時的路線已經完成,無論順序應該沒有關係......應該使用Exchange的副本...發表您的路線,我們也許可以幫助更多的

2

是的,你應該配置喜歡的東西

  • onCompletion
  • onException的
  • 截距
  • 的ErrorHandler
  • 成交
  • 政策

在路線的開始。然而,DSL是Camel 2.x非常開放,因此您可以在某些地方將其配置在其他地方(例如不在開始階段)。但是經驗法則是先做到這一點。之後,你經常路線。

旁註:記住,駱駝還允許您配置這些種在全球範圍內(又名上下文範圍),而不是路線。例如,您可以使用 上下文作用域錯誤處理程序。然後只有在特殊路由 重寫並且有一個路由特殊的錯誤處理程序。

在Camel 3.0以後,我們將使DSL更加嚴格,所以我們在開始時強制配置。這也減少了您在代碼幫助列表中看到的方法的數量(例如按Ctrl +空格鍵)在常規路線中。因爲那些配置將不再列出。

他們出現的原因是他們遇到了同樣的基礎類,這是DSL中的一塊基石。我們不想在當前的2.x版本中解決這個問題,因爲有些人可能會受到影響。