骆驼日志错误
Camel log error
我使用 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}"))
}
如何使用 scala dsl 正确捕获异常?以及如何指定回滚策略?我不希望它在失败时重试。
有主见的回答..
恕我直言,您应该尝试使用 camel 作为 声明性 语言。我总是发现 '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,了解处理错误的不同方法。
我使用 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}"))
}
如何使用 scala dsl 正确捕获异常?以及如何指定回滚策略?我不希望它在失败时重试。
有主见的回答..
恕我直言,您应该尝试使用 camel 作为 声明性 语言。我总是发现 '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,了解处理错误的不同方法。