1

根据Camel Stream文档,可以将消息路由到/来自各种数据流。

但是,就我而言,我希望将 a 中的数据 ( byte[])ByteArrayInputStream发送到 Camel 路由。问题是该InputStream组件似乎唯一支持的是FileInputStream这样的:

from("stream:file?fileName=/server/logs/server.log&scanStream=true&scanStreamDelay=1000").to("bean:logService?method=parseLogLine");

但看起来指定 a 的唯一方法ByteArrayInputStream是像这样使用stream:headerURI:

ByteArrayInputStream byteStream = new ByteArrayInputStream(someData);
from("direct:a").setHeader("stream", constant(byteStream)).to("stream:header");

但是,如果您必须将自定义流指定为标头,我看不出您如何在from()子句中完成这样的事情。任何想法如何做到这一点?

4

1 回答 1

3

stream:file用于将文件作为流读取。您不能将 java 对象发送到该端点。它只从您的文件系统中读取文件。

您可以使用 Camel 的类型转换器将有效负载转换为其他内容,例如byte[]

from("stream:file:...")
  .convertBodyTo(byte[].class)
  ...

您可以在此处阅读有关 Camel 类型转换器的信息:http: //camel.apache.org/type-converter.html

于 2014-09-03T20:00:11.690 回答