2014-09-03 17 views
1

Camel Stream 문서에 따르면 다양한 데이터 스트림간에 메시지를 라우팅 할 수 있습니다.ByteArrayInputStream에서 카멜 라우팅

그러나 제 경우에는 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"); 

그러나 사용자 지정 스트림을 헤더로 지정해야한다면 from() 절 내에서 사용자 지정 스트림을 어떻게 수행 할 수 있는지 알 수 없습니다. 어떤 아이디어가 이것을 어떻게?

답변

3

stream:file은 스트림으로 읽기 파일 용입니다. 해당 엔드 포인트에 Java 오브젝트를 보낼 수 없습니다. 파일 시스템의 파일에서만 읽습니다. 내가 바이트 스트림을 보내 http://camel.apache.org/type-converter.html

+0

어떻게 :

당신은 당신이 여기 낙타의 형식 변환기에 대해 읽을 수있는 byte[]

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

으로, 뭔가 다른 페이로드를 변환하는 낙타의 형식 변환기를 사용할 수 있습니다 유닉스 명령'echo "hi"> somefile'과 같은 파일에? –