2015-01-17 69 views
1

我有一個要用騾子解決的需求。我的流程設計如下所示:騾私人流動和關注點分離

  • 主流與請求 - 響應HTTP入站端點。在對當前有效載荷應用幾次轉換之後,該主流調用兩個私有流,即private-flow1private-flow2,它們是處理策略是同步的mule私有流。
  • private-flow1使用請求 - 響應HTTP出站端點調用外部服務。
  • private-flow2使用數據庫連接器將來自外部服務的響應放置在數據庫上。

如果在每個私有流程中有任何異常,我想使用Catch Exception Strategy在相應的私有流程本身中處理它們。

我有這樣的設計來區分顧慮,以便每個流程執行單一的責任。

假設有像IOException異常,或者拋出:SQLException任何異常,在私人資本流動中的任何一個,我怎麼能重新把我的自定義異常,例如,org.mycompany.CustomException其中的根本原因。所以主流程將只需要處理org.mycompany.CustomException並構建相關的異常響應。

說,例如,如果私人-流1拋出一個由IOException異常引起org.mycompany.CustomException,所述realted異常響應將是:

{ 「exceptionMessage」:外部服務不可用, 「exceptionCode」 :101}

,並且如果私有流2拋出其通過的SQLException引起org.mycompany.CustomException,所述realted異常響應將是

{「exceptionMessage」:數據庫不可用,「exceptionCode」:102}

回答

1

每個私有流程都會有自己的異常策略,您可以使用從流動Groovy的組件拋出一個異常..

這裏鏈接如何做到這一點: - How do I force an exception in mule

自定義異常創建Java類這將延長DefaultMessagingExceptionStrategy

更新: - 使用示例定製異常策略: - Why is Mule exception strategy so chatty?

+0

是groovy腳本組件唯一可用選項,以重新引發異常嗎? –

+0

如果你正在計劃自定義異常,你可以使用Java類或Groovy重新拋出自定義異常 –

+0

你能否提供一個例子或鏈接來創建自定義的異常使用java-class將擴展DefaultMessagingExceptionStrategy?以及如何在流中使用這個java-class。 –