如何将路由实例变量的值传递给骆驼中的另一个bean

How to pass value of instance variable of route to another bean in camel

我有如下示例路由,需要将 outputStream 的值发送到 batchContentProcessor class 到 getBatchConent 方法..如下所示..帮助我如何将实例变量值发送到 bean[=10 的方法=]

您应该能够将实例变量作为 header 放到交换器上,然后从您的 bean 中的 Exchange object 访问它。如果您简单地将 Exchange 参数添加到 bean 方法,Camel 将自动将 Exchange 绑定到 bean,如 here in the camel docs.

所述

例如:

class CamelBean {
    public String getBatchContent(String body, Exchange exchange) {
        ByteArrayOutputStream stream = exchange.getHeader("stream");
    }       
}

我不确定你想要达到什么目的,我怀疑理解这一点会让我更有机会给你一个好的答案。

您的 java DSL 将无法工作,因为您正试图将 outputStream 的 "string" 值添加到 URL,这不会做任何有用的事情 - 它只会使 URL 无效。

阅读有关 bean 调用过程如何工作的 bean-binding 说明:http://camel.apache.org/bean-binding.html

由于您已经将流分配给 stream header,我认为您可以..

    from(DECRYPTION_ENDPOINT).routeId(CcsRoutes.DECRYPTION_ROUTE.name())
     .setHeader("stream", constant(outputStream)).log("About to write ${file:name}")
     .to("bean:batchContentProcessor?method=getBatchConent( ${header.stream} )");