根据Camel Stream文档,可以将消息路由到各种数据流中。
但是,在我的情况下,我希望byte[]
中的数据(ByteArrayInputStream
)被发送到Camel路由。问题是该组件似乎支持的唯一InputStream
是FileInputStream
,如此:
from("stream:file?fileName=/server/logs/server.log&scanStream=true&scanStreamDelay=1000").to("bean:logService?method=parseLogLine");
但看起来指定ByteArrayInputStream
的唯一方法是使用stream:header
URI,如下所示:
ByteArrayInputStream byteStream = new ByteArrayInputStream(someData);
from("direct:a").setHeader("stream", constant(byteStream)).to("stream:header");
但是如果你必须将自定义流指定为标题,我看不出你如何在from()
子句中完成这样的事情。任何想法如何做到这一点?
答案 0 :(得分:3)
stream:file
用于将文件作为流读取。您无法将java对象发送到该端点。它只从文件系统中的文件中读取。
您可以使用Camel的类型转换器将有效负载转换为其他内容,例如byte[]
from("stream:file:...")
.convertBodyTo(byte[].class)
...
您可以在此处阅读有关Camel类型转换器的信息:http://camel.apache.org/type-converter.html