I have an issue reading JMS messages from an old JMS 1.0 implementation provided by swiftMQ as part of a transaction. The transaction always rolls back and never commits a read from the queue.
Looking at ServiceTaskManager, in the method handleMessage, the logic it takes is:
1. pass message to jmsMessageReceiver for processing
2. close the consumer
3. commit or rollback transaction on session.
4. close session
5. close connection
It appears though that at stage 2 with swiftMQ the open transaction is rolledback. This means the commit in stage 3 does nothing.
The solution is swap stages 2 and 3 such that the open transaction is commited before the consumer is closed.
I noticted this issue on the verison of Transports (1.0) that ships with WSO2's ESB product but it appears that the same issue applies to 1.1 as well.