2014-09-03 149 views
1

根據Camel Stream文檔,可以將消息路由到/來自各種數據流。來自ByteArrayInputStream的駱駝路由

但是,就我而言,我希望將ByteArrayInputStream中的數據(byte[])發送給駱駝路線。問題是,該組件似乎支持的唯一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"); 

但是,如果您必須將自定義流指定爲標題,我不明白from()子句中您可以如何完成這樣的事情。任何想法如何做到這一點?

回答

3

stream:file用於讀取文件作爲流。您無法將Java對象發送到該端點。它只能從文件系統中讀取文件。

您可以使用駱駝的類型轉換器的負載轉換成別的東西,比如byte[]

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

你可以閱讀有關駱駝的類型轉換器在這裏:http://camel.apache.org/type-converter.html

+0

你怎麼我發送字節流到一個文件,相當於Unix命令echo「hi」> somefile'? – 2017-06-18 20:33:43