On Tue, 2012-12-04 at 11:32 -0800, Jonathan Booth wrote:
> Hi all,
> 
> I'm continuing the apparently elusive quest to get a pipelining capable 
> client. We're using the 4.2 HttpCore-NIO parts to build one. I'm aware of the 
> issues with non-idempotent POST/PUT requests, as well as expect: 100-continue 
> forcing a pipeline flush. We still need pipelining for our use case (high 
> bandwidth message rate of small messages over long-latency links with 
> idempotent PUT transfers). I found the previous mails on this list talking 
> about do this in the AsyncNHttpClientHandler, which is now deprecated in 4.2.
> 
> It looks like I just need to modify HttpAsyncRequestExecutor to have a queue 
> of states so it can track the messages that are in-flight but not yet replied 
> to. It seems like it should work, but a first pass at it doesn't actually do 
> pipelining. I am getting a feeling I also need to extend/replace 
> HttpAsyncRequester and BasicAsyncRequestExecutionHandler in order to have a 
> version of the handler where I can close the requestProducer and 
> responseConsumer independently (producer once I move to 
> MessageState.COMPLETED for that request, and consumer once we get a reply 
> back).
> 
> Can anyone comment if I'm on the right track, or off in the weeds?
> 

Hi Jonathan

I believe you are on the right track. You'll definitely need a pipeline
capable version of HttpAsyncRequestExecutor and most likely a custom
HttpAsyncRequestExecutionHandler (or similar interface optimized for
pipelining) as well.

I was planning to work on adding support for message pipelining to
HttpCore but it looks like I will not get around to until HttpClient
(blocking) 4.3 is released.

Cheers

Oleg 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to