Thanks Ryan,It works perfectly when splitting instruction is following a
from("mina:tcp://localhost:4122?textline=true"), but not in my case where
the splitting instruction follows a
to("mina:tcp://localhost:4122?textline=true"). Only the first line of the
response is processed. My component acts as a client so I have to send a
request first and wait for the response.On Wed, May 6, 2009 at 6:39 PM, Ryan Gardner <[email protected]> wrote: > > 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
