java - 来自 ByteArrayInputStream 的 Camel 路由

标签 java streaming apache-camel bytearrayinputstream

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

但是,在我的例子中,我希望将 ByteArrayInputStream 中的数据 (byte[]) 发送到 Camel 路由。问题是组件似乎唯一支持的 InputStreamFileInputStream ,如下所示:

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/

相关文章:

java - 高效的 BigDecimal 上下舍入到两位小数

java - 如何将主机名附加到 log4j.xml 中的日志文件

java - Spring Boot 应用程序 Heroku PostgreSQL 错误 : GenerationTarget encountered exception accepting command : Error executing DDL . .. 通过 JDBC 语句

python - 了解 Python HTTP 流

streaming - 使用 live555 进行 JPEG 流传输

Android:像 iOS 一样逐步获取 HTTP 响应

java - 如何确保在我的项目中使用最新的 Java 库?

java - Camel 在完成时停止上下文

java - Apache Camel ,RabbitMQ : Consuming a queue that is autodelete=false on an exchange that is autodelete=true

java - 如何在运行时在 Spring Boot 应用程序下将添加/删除路由更新到 Apache Camel 中?