Apache Camel choice()和doTry()似乎没有合作

时间:2016-03-07 17:40:18

标签: apache-camel

当我定义这样的路线(片段)时:

int time(time=100);
   :units = "year as %Y.%f" ;
   :calendar = "proleptic_gregorian" ;
   :_ChunkSizes = 1048576; // int

我的IDE(IntelliJ)中出现.doTry() .choice() .when(header("s").isEqualTo(1)) .log(LoggingLevel.WARN, "normal") .endChoice() .doCatch(Exception.class) .log(LoggingLevel.WARN, "exception") .endDoTry() 错误。

我是否不允许在Cannot resolve method doCatch(...)内添加choice个谓词?

2 个答案:

答案 0 :(得分:4)

试试这个:

.doTry()
    .choice()
        .when(header("s").isEqualTo(1))
            .log(LoggingLevel.WARN, "normal")
    .endDoTry()
.doCatch(Exception.class)
    .log(LoggingLevel.WARN, "exception")
.end()

我和你不久前犯的是同样的错误; " endDoTry"听起来像#34;结束了doTry块"但我认为它应该被理解为"结束当前的块是什么,并回到封闭的尝试定义"。

同样适用于" endChoice"。

答案 1 :(得分:0)

这有效..但老实说,我不认为这是一个很好的答案:

alarm_count_b