我已经使用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列表。然后,我将列表拆分为其元素,分别处理每个元素。
但在处理它们之前,我想记录它的主体,但不是主体本身,而是以主体作为参数调用函数的结果。
但是评估表达式需要Exchange对象,但我找不到检索它的方法。它是否有一个可用的引用,通过routeBuilder从配置方法到交换对象?
我知道还有其他选择。
就像我可以使用一个处理器(即siganture提供一个exchange对象的处理方法)而不是log语句一样。但我更喜欢使用日志,因为我发现代码更清晰。
甚至我也可以在MyResultSetTobjectVO中插入函数,并像这样调用它。这很好用。但该函数是众多VO中的一个,我不想在每个VO中都编写它,每当更新代码时,复制
log("${body.returnSomethingInteresting }")
在另一个stackoverflow问题中,引用了使用exchange对象的evaluate方法。但是没有提到上下文,所以我想是在处理器内部,我不希望使用它。
也许我不需要使用求值方法,我可以获得对身体对象的引用,这也适合我。
因此,我想知道如何在camel dsl routeBuilder的configure方法中获得对exchange/body对象的引用?
提前非常感谢您。
不能,配置方法用于配置路由。在启动期间仅调用一次。
正如您所提到的,您可以使用内联处理器来调用该函数。简单语言还可以调用bean/方法并使用bean参数绑定,以便它可以将来自交换的数据绑定到bean方法签名。然后您可以直接在Log EIP中使用简单语言。
本文向大家介绍startup class的configure方法有什么作用?相关面试题,主要包含被问及startup class的configure方法有什么作用?时的应答技巧和注意事项,需要的朋友参考一下 这个方法来定义整个应用如何响应HTTP请求。它有几个比较重要的参数,application builder,Hosting environment, logo factory, 在这里我们可以
错误:无法将类型为“std::_bit_reference&”的非常量lvalue引用绑定到类型为“std::vector::reference”{aka“std::_bit_reference”}的rvalue 因此,它抱怨,因为只有第二个参数是rvalue
我目前正在使用下面的,但我无法想象这是最有效率的方式?
这里我们创建了一个类演示,其中有两个方法m1和m2,并使用这个关键字通过m2调用m1。我的问题是我们正在传递(演示o)作为m1方法中的参数,我们如何将与我们所在的相同类的引用作为参数传递,并且这个关键字引用一个对象,这个关键字如何引用一个类的引用? 欢迎提供任何参考资料。
以下的宏为configure脚本管理版本号。使用它们是可选的。 宏: AC_PREREQ version) 确保使用的是足够新的Autoconf版本。如果用于创建configure的Autoconf的版本比version 要早,就在标准错误输出打印一条错 误消息并不会创建configure。例如:AC—PREREQ(1.8) 如果你的'configure.in'依赖于在不同Autoconf版本中改
我们可以按以下方式对汽车列表进行排序:, 如果我们看到方法<代码>比较器的签名。比较,输入参数类型为函数 在上面的例子中,如何转换为