我有一个Camel路由,其中我尝试处理文件,然后尝试根据文件处理是否成功向数据库插入一行。我只是添加一个属性"处理"如果处理在我调用的bean中成功,则将其设置为true。由于我正在检查这些条件,因此我有嵌套选择和其他语句,我只是想确保我的语句写得正确。这是我路线的基本结构:
from("file:/test")
.choice()
.when(header("CamelFileName").endsWith(".txt"))
.bean(new ProcessFileBean())
.choice()
.when(exchangeProperty("processed").isEqualTo(true))
.to("sql: insert into table (id, file) values (1, file)")
.otherwise()
.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
logger.info("File has not been processed");
}
});
另外,我可以从路由中捕获任何异常,例如在数据库插入过程中并将它们记录到文件中吗?
答案 0 :(得分:3)
是的,路线应该使用您定义的路线。
要捕获异常,请使用 OnException 语法根据特定异常执行某些操作。例如OnException(IOException.class).handled(true).to("error");
您还可以捕获类似于普通java中的try catch的异常。看这里: http://camel.apache.org/try-catch-finally.html