Булево условие в верблюде - PullRequest
       6

Булево условие в верблюде

0 голосов
/ 03 октября 2018

Есть ли способ сделать что-то подобное, чтобы это работало?Я говорю о состоянии внутри, когда.

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

Я пытался:

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

Для первого решения выдается ошибка, а второе не работает.Я знаю, что могу создать новый класс и метод внутри, отсюда: Как использовать булево условие Java в верблюжьем маршруте? И я прочитал о предикате здесь: http://www.davsclaus.com/2009/02/apache-camel-and-using-compound.html. Но безиспользуя новый класс или предикат, есть ли способ, которым я могу достичь этого?

1 Ответ

0 голосов
/ 03 октября 2018

Ленивым решением является использование Верблюжий простой язык (http://camel.apache.org/simple.html), который позволяет вам получить доступ ко всему (заголовки, свойства, тело, метод и т. Д.) Текущего обмена

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

Более ОО решение будет использовать Предикат верблюда (Строитель):

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


.choice()
    .when( isFailed )   
...