I am using non-transacted sessions since my messages are unconnected. When I switched from AUTO_ACKNOWLEDGE to CLIENT_ACKNOWLEDGE to try to get robustness against failure at the consumer end, and only acknowledged messages received when I had safely used the content, then unacknowledged messages could indeed be resent automatically -- but it only happened after the whole JBoss service was restarted. What I want is live recovery, so I tried calling recover() on my Session when I suspected a problem, and I get an IllegalStateException - session is not transacted. The JMS api documentation says recover() can be used only on NONtransacted sessions, whereas rollback is used for transacted sessions. The JBoss implementation of recover() seems to call rollback(), and then it complains that my session isn't transacted.
Can anyone throw any light on this? I'm using JBoss 2.4.3 if that makes any difference.