2017-02-03 8 views
4

나는 scala camel 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}")) 
    } 

어떻게 제대로 스칼라 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

주관적인 대답 ..

당신이 시도하고 선언 언어로 낙타를 사용해야 IMHO. 난 항상 여기

난 당신이 다른 방법에 대한 훌륭한 책 Camel In action을 확인하는 것이 좋습니다 더 선언 예외 핸들러

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") 

} 

를 사용하는 예를 너무 필수적 '시도 ... 캐치'DSL을 찾을 수 처리 오류.

+0

와우! 내일 내가 내일 확인하겠습니다. – ipoteka