The WebSphere MQ Adapter User’s Guide Version 6.5 has a section talking about the behaviour of listeners that says (in summary):
If we have a transactional connection then the listener will remove a message from the queue before it has successfully published it
If we have a non-transactional connection then the listener will conditionally commit or roll-back the message if the listener can’t process the message.
To me this seems to be the wrong way around. Is this a documentation problem? Shouldn’t the transactional connection use transactional commit/rollback operations?
I’m interested in sorting this out to prevent data loss. I don’t know how to work out a destructive test for this (maybe by filling up a Broker?).