如果条件,骆驼路线多次

时间:2016-12-15 19:46:53

标签: apache-camel

我必须在骆驼中写多个if条件,我需要帮助才能到处走动。

if(token is NULL)
if(condition is NULL) 
if(Dates does not match)
Then execute this...

我正在尝试的是

.choice
.when(token is NULL)
.when(condition is NULL)
.when(Dates does not match)
.log(update DB)
.endchoice()

哪个不行.. 请帮忙

3 个答案:

答案 0 :(得分:2)

两个条件:

Predicate p1 = header("token").isEqualTo("001"):
Predicate p2 = header("condition").isEqualTo("002");

结合以下条件:

Predicate cond = PredicateBuilder.and(p1, p2);

然后在Camel

.choice
.when(cond)
.log(update DB)
.endchoice()

答案 1 :(得分:0)

您需要在使用和&&

时单独执行此操作
.when(token is NULL && condition is NULL && XXX)

有多种方法可以做到这一点。

如果您使用Java代码,那么您可以将多个谓词附加在一起:http://www.davsclaus.com/2009/02/apache-camel-and-using-compound.html

答案 2 :(得分:0)

执行此操作的最佳方法是使用谓词。

如果您使用Java DSL,通过使用表达式构建器来构建多个条件,然后在when()中使用谓词,您可以将Predicates定义为私有字段,您的路径看起来会更清晰,更容易阅读。

private static final Predicate invalidHeaders = or(header(XXX).isNull(),header(YYY).isNull());

.....

。当(invalidHeaders)

相关问题