У меня есть код следующего маршрута с использованием Apache Camel версии 2.21.2.Есть также функция, которую я хочу использовать для регистрации тела.
Function<Object, String> returnSomethingInteresting = o -> {
// ... compute something depending on the o class type
return "the result based on the body";
};
@Override
public void configure() {
from("timer://foo?fixedRate=true&period=15s") // every 15 seconds
.setBody( Bdd.getVOs ) // I call the database to retrieve a List<MyResulSetObjectVO>
.split().body() //split the list in its components
.log( returnSomethingInteresting.apply( simple("${body}").evaluate(exchange, MyResulSetObjectVO.class))))
.to("..."); // continue the execution
}//configure
Сначала я получаю список vo из базы данных, используя поставщика.Затем я разбил Список на его элементы, чтобы обработать каждый из них по отдельности.
Но прежде чем обрабатывать их, я хотел бы записать его тело, но не само тело, а результат вызова функции с телом.в качестве параметра.
Но для оценки Expression требуется объект Exchange, но я не могу найти способ его получения.Есть ли полезная ссылка на объект обмена из метода configure через routeBuilder?
Я знаю, что есть альтернативы.
Как я могу использовать процессор (то есть, метод siganture процесса обеспечиваетобъект обмена) вместо оператора журнала.Но я предпочитаю делать это с журналом, потому что я нахожу код более понятным.
Или даже я могу вставить функцию в MyResultSetObjectVO и вызвать ее примерно так.Который работает отлично.Но эта функция является одной из множества разновидностей VO, и я не хочу писать ее в каждом VO, и при каждом обновлении кода копируйте и вставляйте ...
log("${body.returnSomethingInteresting }")
Есть ссылка наметод оценки, использующий объект обмена в этом другом стеке потока вопрос .Но ни один из контекстов не упоминается, поэтому я полагаю, что он находится внутри процессора, который я не хочу использовать.
Может быть, мне не нужно использовать метод оценки, и я могу получить ссылку на объект body, которыйтакже подойдет мне.
Итак, все сказано, я хотел бы знать, как я могу получить ссылку на объект exchange / body внутри метода configure для camel dsl routeBuilder?
Заранее большое спасибо.