Stream ComponentThe stream: component provides access to the System.in, System.out and System.err streams together with allowing streaming of file and url. URI formatstream:in stream:out stream:err stream:header And the file and url is supported in Camel 2.0: stream:file?fileName=/foo/bar.txt stream:url If the stream:header option is specified then the stream header is used to find the stream to write to. This option is only available for StreamProducer. Options
Message contentThe stream: component supports either String or byte[] for writing to streams. Just add to the message.in.body either a Stirng or byte[] content. SamplesIn this sample we output to System.out the content from the message when its put on the direct:in queue. public void testStringContent() throws Exception { template.sendBody("direct:in", "Hello Text World\n"); } public void testBinaryContent() { template.sendBody("direct:in", "Hello Bytes World\n".getBytes()); } protected RouteBuilder createRouteBuilder() { return new RouteBuilder() { public void configure() { from("direct:in").to("stream:out"); } }; } This sample demonstrates how the header type can be used to determine which stream to use. In the sample we use our own output stream (MyOutputStream). private OutputStream mystream = new MyOutputStream(); private StringBuffer sb = new StringBuffer(); public void testStringContent() { template.sendBody("direct:in", "Hello"); // StreamProducer appends \n in text mode assertEquals("Hello\n", sb.toString()); } public void testBinaryContent() { template.sendBody("direct:in", "Hello".getBytes()); // StreamProducer is in binary mode so no \n is appended assertEquals("Hello", sb.toString()); } protected RouteBuilder createRouteBuilder() { return new RouteBuilder() { public void configure() { from("direct:in").setHeader("stream", constant(mystream)). to("stream:header"); } }; } private class MyOutputStream extends OutputStream { public void write(int b) throws IOException { sb.append((char)b); } } This sample demonstrates how to continously read a file stream such as the Unix tail command: from("stream:file?fileName=/server/logs/server.log?scanStream=true&scanStreamDelay=1000").to("bean:logService?method=parseLogLine"); See Also |