根据Camel Stream docs,可以将消息路由到/来自各种数据流。
但是,在我的例子中,我希望将 ByteArrayInputStream
中的数据 (byte[]
) 发送到 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");
但是如果您必须将自定义流指定为 header ,我看不出如何在 from()
子句中完成这样的事情。任何想法如何做到这一点?
最佳答案
stream:file
用于将文件作为流读取。您不能将 java 对象发送到该端点。它只从您的文件系统中读取文件。
您可以使用 Camel 的类型转换器将负载转换为其他内容,例如 byte[]
from("stream:file:...")
.convertBodyTo(byte[].class)
...
您可以在这里阅读有关 Camel 类型转换器的信息:http://camel.apache.org/type-converter.html
关于java - 来自 ByteArrayInputStream 的 Camel 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25652000/