Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
2.9.1
-
None
-
Unknown
Description
chooseProcessor method accesses resources in a non synchronized fashion. This leads in errors during loadbalancing and as a result messages are lost. I have created a project that provides an integration test (using karaf 2.2.5 and a custom command to check messages of the activemq broker) with a custom weighted round robin loadbalancer that "seems" to solve the issue of lost messages.
The problem with the provided solution is that when messages are dequeued from the second stage of queues (queues1, 2 and 3) in custom-loadbalancer-route subproject the jmsconsumer threads also block (checked this using profiler). I would expect only the jmsconsumer threads of the first queue (initial.queue) to block waiting for the synchronized chooseProcessor method. Any clues on why this happens?