camel-javadsl-passbean方法返回值到头

camel-javadsl-passbean方法返回值到头,java,apache-camel,dsl,Java,Apache Camel,Dsl,Java-ApacheCamel 2.17 Java DSL 我的路由处理数据并返回它处理的日期,我想将从myBean.processData返回的List传递到日志并在标题中设置 下面是我的代码 from("route1") .bean("myBean","processData") .log("how do i log the response of processData return") . setHeader("processDataReturnValue") // how can p

Java-ApacheCamel 2.17 Java DSL

我的路由处理数据并返回它处理的日期,我想将从
myBean.processData
返回的
List
传递到日志并在标题中设置

下面是我的代码

from("route1")
.bean("myBean","processData")
.log("how do i log the response of processData return")
. setHeader("processDataReturnValue") // how can pass processData return 

值到标题?

以下代码就是您要查找的代码:

from("route1")
   .bean("myBean","processData")
   .log("***** processData return value: ${body.toString()} *****")
   .setHeader("myHeader", body());
摘自《骆驼在行动》第4章。将bean与Camel一起使用:

“在运行时,骆驼交换被路由,并在路由中的给定点到达BeanProcessor。BeanProcessor然后处理交换,执行以下一般步骤:

  • 在注册表中查找bean
  • 选择要在bean上调用的方法
  • 绑定到所选方法的参数(例如,使用输入消息体作为参数;这将在第4.5节中详细介绍)
  • 调用该方法
  • 处理发生的任何调用错误(bean抛出的任何异常都将在Camel交换上设置,以便进一步处理错误)
  • 将方法的回复(如果有)设置为骆驼交换上输出消息的正文
  • 我已经使用MyBean测试了路线,类似于:

    @Component
    public class MyBean {
    
        public List<LocalDate> processData(Exchange exchange) {
            return Lists.newArrayList(LocalDate.now(),
                       LocalDate.now().minusYears(1L));
       }
    }
    
    @组件
    公共类MyBean{
    公共列表processData(Exchange){
    return Lists.newArrayList(LocalDate.now(),
    LocalDate.now().minusYears(1L));
    }
    }
    

    S.I将考虑隐藏日志、设置头和实际bean调用在处理器中。

    下面的代码是您正在寻找的:

    from("route1")
       .bean("myBean","processData")
       .log("***** processData return value: ${body.toString()} *****")
       .setHeader("myHeader", body());
    
    摘自《骆驼行动》第4章。将豆子与骆驼一起使用:

    “在运行时,骆驼交换被路由,并在路由中的给定点到达BeanProcessor。BeanProcessor然后处理交换,执行以下一般步骤:

  • 在注册表中查找bean
  • 选择要在bean上调用的方法
  • 绑定到所选方法的参数(例如,使用输入消息体作为参数;这将在第4.5节中详细介绍)
  • 调用该方法
  • 处理发生的任何调用错误(bean抛出的任何异常都将在Camel交换上设置,以便进一步处理错误)
  • 将方法的回复(如果有)设置为骆驼交换上输出消息的正文
  • 我已经使用MyBean测试了路线,类似于:

    @Component
    public class MyBean {
    
        public List<LocalDate> processData(Exchange exchange) {
            return Lists.newArrayList(LocalDate.now(),
                       LocalDate.now().minusYears(1L));
       }
    }
    
    @组件
    公共类MyBean{
    公共列表processData(Exchange){
    return Lists.newArrayList(LocalDate.now(),
    LocalDate.now().minusYears(1L));
    }
    }
    

    S.I将考虑隐藏日志、设置头和实际bean调用在处理器中。