骆驼路线中的布尔条件

时间:2018-10-03 13:08:03

标签: apache-camel spring-camel

有没有办法像这样工作?我说的是什么时候的情况。

.choice()
       .when(Exchange::isFailed)
         .to(direct(URI_DEADLETTER))

我尝试过:

.when(method(Exchange.class, "isFailed"))
.when().exchange(Exchange::isFailed)

对于第一个解决方案,将引发错误,而第二个则不起作用。 我知道我可以从这里创建一个新的类和一个方法:How do i use java boolean condition in camel route? 我在这里了解到谓词:http://www.davsclaus.com/2009/02/apache-camel-and-using-compound.html。 但是,如果不使用新的类或谓词,有什么方法可以实现呢?

1 个答案:

答案 0 :(得分:2)

一个懒惰的解决方案是使用骆驼简单语言http://camel.apache.org/simple.html),该语言可让您访问当前交换的任何内容(标题,属性,主体,方法等)。

.choice()
.when( simple("${exception} != null") )

更多面向对象的解决方案是使用 Camel Predicate (构建器):

Predicate condition1 = ...
Predicate condition2 = ...; 
Predicate isFailed = PredicateBuilder.or(condition1, condition2);   


.choice()
    .when( isFailed )