我正在使用Apache Camel DSL路由,并希望检查主体是否不是null
,并且主体是否不包含authenticate failed
之类的子字符串。在java中,类似于:
if(body != null && !body.contains("authenticate failed")) {
//Do something.
}
Apache Camel DSL:
.choice()
.when(body().contains("authenticate failed"))
.log("after choice body().contains('authenticate failed') body: ${body}")
.when(body().isNotNull()) //Here I want to add the addiontional condition to this when `body not contains authenticate failed`.
我怎么写这样的条件呢?在process方法中 predicate 对象,在我的情况下写tin?
1条答案
按热度按时间pvcm50d11#
您可以使用PredicateBuilder来创建漂亮的复合 predicate 。下面是如何使用PredicateBuilder执行简单的Body不为空或空检查的示例。
Not和Or可以将 predicate 列表作为参数,甚至可以使用其他组合 predicate ,这允许您创建一些相当复杂的组合 predicate 。但是,当使用PredicateBuilder开始变得过于冗长时,最好使用处理器或bean来抽象掉一些复杂性。