Details
-
Bug
-
Status: Closed
-
Blocker
-
Resolution: Fixed
-
M1, M2
-
None
Description
The message delivery process:
Mina puts a message on _queue in AMQSession and the dispatcher thread take()s from here and dispatches to the _consumers. If the _consumer doesn't have a message listener set at connection start then messages are stored on _synchronousQueue (which needs to be > 1 to pass JMS TCK as multiple consumers on a session can run in any order and a synchronous put/poll will block the dispatcher).
When setting the message listener later the _synchronousQueue is just poll()'ed and the first message delivered the remaining messages will be left on the queue and lost, subsequent messages on the session will arrive first.