Camel嵌套选择和异常

时间:2016-08-10 18:24:43

标签: exception apache-camel

我有一个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");
            }
            });

另外,我可以从路由中捕获任何异常,例如在数据库插入过程中并将它们记录到文件中吗?

1 个答案:

答案 0 :(得分:3)

是的,路线应该使用您定义的路线。

要捕获异常,请使用 OnException 语法根据特定异常执行某些操作。例如OnException(IOException.class).handled(true).to("error");

您还可以捕获类似于普通java中的try catch的异常。看这里: http://camel.apache.org/try-catch-finally.html