java - Camel java dsl将bean方法返回值传递给 header

标签 java apache-camel dsl

Java - Apache Camel 2.17 JAVA DSL

我的路线处理数据并返回处理的日期,我想传递 List<LocalDate>myBean.processData 返回到日志并在标题中设置。

以下是我的代码

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());

摘自“ Camel 在行动”第 1 章。 4. 将 beans 与 Camel 一起使用:

“在运行时,Camel 交换被路由,并且在路由中的给定点,它到达 BeanProcessor。然后 BeanProcessor 处理交换,执行以下常规步骤:

  1. 在注册表中查找 bean
  2. 选择要在 bean 上调用的方法
  3. 绑定(bind)到所选方法的参数(例如,使用输入消息的正文作为参数;这将在 4.5 节中详细介绍)
  4. 调用方法
  5. 处理发生的任何调用错误(从 bean 抛出的任何异常都将在 Camel 交换上设置以进行进一步的错误处理)
  6. 将方法的回复(如果有)设置为 Camel 交换上输出消息的正文

我已经使用 MyBean 测试了类似于以下的路由:

@Component
public class MyBean {

    public List<LocalDate> processData(Exchange exchange) {
        return Lists.newArrayList(LocalDate.now(),
                   LocalDate.now().minusYears(1L));
   }
}

附注我会考虑在处理器中隐藏日志记录、设置 header 和实际的 bean 调用。

关于java - Camel java dsl将bean方法返回值传递给 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44373957/

相关文章:

ruby - 模块同时扩展和包含?

java - instanceof 和泛型的编译错误

java - Apache Camel FTP 在轮询时使用 Simple 来选择目录

java - Apache Camel With Quartz - 没有并发执行

apache-camel - 如何将参数传递给 Camel 路线?

elasticsearch - 弹性搜寻(DSL):字词不符任何内容

java - vscode 错误 : References to interface static methods are allowed only at source level 1. 8 或以上

Java WebView : "Failed to read the ' cookie' property from 'Document' : Access is denied for this document"

java - 使用 Selenium Webdrivers 方法 "browser.helperApps.neverAsk.saveToDisk"如何在单击链接时自动下载文件

function - Elixir 使用模式匹配构建自定义函数并使用宏进行保护?