我想在路线中添加继续行为,我的路线如下

from("file:D:\\?fileName=abc.csv&noop=true").split().unmarshal().csv()
.to("direct:insertToDb").end();

from("direct:insertToDb")
.to("direct:getDataId")
.to("direct:getDataParameters")
.to("direct:insertDataInDb");

from("direct:getDataId")
.to("sql:SELECT id FROM data WHERE name = :#name)
.choice()
.when(header("id").isGreaterThan(0) )
.setProperty("id", header("id"))
.otherwise()
.log("Error for")
.endChoice().end();


我希望如果direct:getDataId找不到任何记录,我从CSV中获取当前记录的路由执行将跳过,并处理下一个请求。等于继续关键字。

我如何在Apache Camel路线中实现这一目标?

最佳答案

您可以像这样修改您的路线:

from("file:D:\\?fileName=abc.csv&noop=true").split().unmarshal().csv()
.to("sql:SELECT id FROM data WHERE name = :#name?outputHeader=id&outputType=SelectOne)
.choice().when(header("id").isGreaterThan(0))
    .to("direct:getDataParameters")
    .to("direct:insertDataInDb")
.end();

09-30 17:43
查看更多