在驼峰路由执行中继续行为

时间:2015-10-23 20:01:46

标签: java apache-camel

我想在路线中放置继续行为,我的路线如下

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路线中实现这一目标?

2 个答案:

答案 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。

来自Camel Split Docs

  • stopOnException
  • 默认值:false
  • description:发生异常时是否立即停止继续处理。如果禁用,则Camel继续拆分并处理子消息,无论其中一个是否失败。您可以在AggregationStrategy类中处理异常,您可以完全控制如何处理该异常。