如何将路由实例变量的值传递给骆驼中的另一个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} )");
我有如下示例路由,需要将 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} )");