我想在路线中放置继续行为,我的路线如下
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();
我希望如果直接:getDataId找不到任何记录,我从CSV获取当前记录的路由执行跳过,程序进程下一个请求。它将等于continue关键字。
我如何在Apache Camel路线中实现这一目标?
答案 0 :(得分:1)
您可以像这样修改路线:
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();
答案 1 :(得分:0)
你有考试吗?我建议你尝试使用CamelTestSupport,因为你想要的是默认情况下将如何执行camel。