有没有办法像这样工作?我说的是什么时候的情况。
.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。 但是,如果不使用新的类或谓词,有什么方法可以实现呢?
答案 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 )