On May 6, 2009, at 9:50 AM, will mad wrote:

Hi,

I would like to write a route inside camel in order to handle the following
scenario:

Send an http request to a distant system like this one : “GET
/execute.cgi?opname=get_notifications HTTP/1.1”

When receiving this HTTP request, the distant server responds, in a
continuous-session HTTP reply. It means that the HTTP session remains alive and is never closed. The distant system continuously sends messages. So my camel component has to send the request and then continuously receives data
from the distant server. My problem is when I send the request, I only
receive the first line of the message from the distant system, and leave my
route without processing other messages.

Here is my route:

from("file://c:/tmp/test?delete=true")

.to("log:request")

     .setBody(constant("GET /execute.cgi?opname=get_notifications
HTTP/1.1\r\n\r\n"))

     .to("mina:tcp://localhost:4122?textline=true&sync=false")

     .to("log:response");

http://camel.apache.org/splitter.html

I saw this today while looking at the splitter for another use - but this seems to apply to what you want:

"Available as of Camel 1.5

You can split streams by enabling the streaming mode using the streaming builder method.

from ("direct:streaming ").split(body().tokenize(",")).streaming().to("activemq:my.parts");"
It would seem that in your case doing something like this:

.to("mina:tcp://localhost:4122? textline = true &sync =false").split(body().tokenize("\n")).streaming().to("log:response");

should do the trick.

Ryan

Reply via email to