2017-02-03 43 views
4

我使用scala駱駝dsl和我需要捕捉異常。駱駝日誌錯誤

handle情況下,我的管道不會記錄:

s"$ftpSource" 
    .log("File is received") 
    .as(classOf[String]) 
    .attempt{ 
     process(failingProcessor) 
    }.handle(classOf[Exception]) apply { 
     process((exchange: Exchange) => logger.error(s"Error during file reading: ${exchange.in.toString}")) 
    } 

如何使用Scala的DSL正確捕捉異常?以及如何指定回滾策略?我不希望它在失敗的情況下重試。

唯一的小可憐的例子中,我發現是: https://svn.apache.org/repos/asf/camel/trunk/components/camel-scala/src/test/scala/org/apache/camel/scala/dsl/TryCatchFinallyTest.scala

+0

p.s.當文件非常小時,只將文件內容「投」到一個字符串 –

回答

2

自以爲是的答案..

恕我直言,你應該嘗試用駱駝作爲聲明語言。我總是找不到「的try ... catch」 DSL太勢在必行

下面是一個使用更具聲明異常處理程序

handle[MyException] { 
    log("handling exception") 
    process((e : Exchange) => e.in = "an error occured") 
}.handled 

"jetty:http://localhost:9091/service" ==> { 

    id ("some-error-route") 
    log("processing request") 
    process((e : Exchange) => e.in = e.in[String].reverse) 
    process((_: Exchange) => throw new MyException("Something went wrong")) 
    log("done") 

} 

的一個例子,我建議你檢查出的優秀圖書Camel In action不同的方式處理錯誤。

+0

哇!我會明天檢查 – ipoteka