Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
servicemix-http-2008.01
-
None
-
Windows, Intel Dual core desktop.
Description
ServiceMix http consumer endpoint queues up all the responses until all the requests are processed and response is sent as a batch at the end after finishing processing all requests.. This happens when the no of request sent is higher than configured thread pool and http endpoint is doing some time taking operation to give the response.
To test this I configured servicemix core thread pool and max thread pool to 2 and fired request from 10 HTTP client threads. The result is all the response is returned after all the request processing is done. ie. first client and last client gets the response at same time.
The test sa is http consumer su --> MessageListener su.
send() method is used to send reply back to http consumer.
To simulate time delay in MessageListener, it sleeps for 3 sec. before sending response back to http endpoint.
Though setting ServiceMix thread pool to a higher value than no of concurrent requests solves this problem, this is not a permanent solution as
increasing thread count has a limit.
This is a major issue for us. I spend lot of time debugging it and it seems that a separate thread pool is needed to handle responses as all threads are busy in handling requests.
Tested this in Apache ServiceMix 3.2.1 and Fuse ESB 3.4.0.4 with SEDA flow.