2015-11-22 65 views
0

我在尋找集成框架。並猜測我找到了一個 - Apache Camel。這個框架很酷。但是對於我的一個要求,我無法按照正確的順序放置組件。要求有以下幾個階段 -Apache Camel - 停止執行並返回失敗消息

Authentication 
Authorization 
PreProcessing etc. 

所以,當收到請求時,我需要進行身份驗證,授權,預處理等問題是這些步驟可以失敗,並與我不希望執行流程繼續,而應該返回一些失敗信息。 我嘗試這種東西 -

from("jetty").choice(). 
when(Auth.isAuthenticated()). 
     // proceed to authorization 
     // proceed to preprocessing 
otherwise() 
     // do something 
endChoice(); 

但在這裏的問題是授權階段也可能會失敗,那麼預處理步驟不應該被執行,並授權階段本身應該返回失敗消息。可能嗎?

回答

2

是的,這是標準的駱駝錯誤處理。 請參閱錯誤和異常處理文檔。 https://camel.apache.org/exception-clause.html

  1. 授權階段出現問題。罰款拋出異常。
  2. 你有一個OnException,根據該異常觸發,然後採取一些行動。您可以登錄,重試或將消息發送到另一條路由,以便將其放在ActiveMQ上的死信隊列中。

我可能會做的另一件事是分離你的功能在單獨的路線。將認證,授權和預處理放在不同的路線中。這樣做的一大好處就是它們互不依賴,所以其他需要此功能的流程可以簡單地調用路由,並且可以重用它們。另外,如果認證中出現問題,則消息永遠不會被認證路由等。