camel java dsl 将 bean 方法 return 值传递给 header
camel java dsl pass bean method return value to header
Java - Apache Camel 2.17 JAVA DSL
我的路线处理数据和 return 它处理的日期,我想将 List<LocalDate>
return 从 myBean.processData
传递到日志并设置在 header.
以下是我的代码
from("route1")
.bean("myBean","processData")
.log("how do i log the response of processData return")
. setHeader("processDataReturnValue") // how can pass processData return
值到 header ?
下面的代码就是你要找的:
from("route1")
.bean("myBean","processData")
.log("***** processData return value: ${body.toString()} *****")
.setHeader("myHeader", body());
来自 "Camel in Action" 通道。 4. 将 beans 与 Camel 结合使用:
“在运行时,Camel 交换被路由,并在路由中的给定点到达 BeanProcessor。BeanProcessor 然后处理交换,执行以下一般步骤:
- 在注册表中查找 bean
- 选择要在 bean 上调用的方法
- 绑定到所选方法的参数(例如,使用输入消息的 body 作为参数;这在第 4.5 节中有详细介绍)
- 调用方法
- 处理发生的任何调用错误(从 bean 抛出的任何异常都将在 Camel exchange 上设置以进行进一步的错误处理)
- 将方法的回复(如果有的话)设置为 body Camel exchange 输出消息
我已经使用类似于以下内容的 MyBean 测试了路由:
@Component
public class MyBean {
public List<LocalDate> processData(Exchange exchange) {
return Lists.newArrayList(LocalDate.now(),
LocalDate.now().minusYears(1L));
}
}
P.S。我会考虑在处理器中隐藏日志记录、设置 headers 和实际的 bean 调用。
Java - Apache Camel 2.17 JAVA DSL
我的路线处理数据和 return 它处理的日期,我想将 List<LocalDate>
return 从 myBean.processData
传递到日志并设置在 header.
以下是我的代码
from("route1")
.bean("myBean","processData")
.log("how do i log the response of processData return")
. setHeader("processDataReturnValue") // how can pass processData return
值到 header ?
下面的代码就是你要找的:
from("route1")
.bean("myBean","processData")
.log("***** processData return value: ${body.toString()} *****")
.setHeader("myHeader", body());
来自 "Camel in Action" 通道。 4. 将 beans 与 Camel 结合使用:
“在运行时,Camel 交换被路由,并在路由中的给定点到达 BeanProcessor。BeanProcessor 然后处理交换,执行以下一般步骤:
- 在注册表中查找 bean
- 选择要在 bean 上调用的方法
- 绑定到所选方法的参数(例如,使用输入消息的 body 作为参数;这在第 4.5 节中有详细介绍)
- 调用方法
- 处理发生的任何调用错误(从 bean 抛出的任何异常都将在 Camel exchange 上设置以进行进一步的错误处理)
- 将方法的回复(如果有的话)设置为 body Camel exchange 输出消息
我已经使用类似于以下内容的 MyBean 测试了路由:
@Component
public class MyBean {
public List<LocalDate> processData(Exchange exchange) {
return Lists.newArrayList(LocalDate.now(),
LocalDate.now().minusYears(1L));
}
}
P.S。我会考虑在处理器中隐藏日志记录、设置 headers 和实际的 bean 调用。