I am trying to build a job which listens to a message queue (Websphere MQ in this case), and based on the message decides whether to process it or not. If so, it needs to consume the message, but if not, I want to leave the message on the queue. In either case, I want to keep listening to the queue. I've got "Keep Listening" checked. and "Commit (delete message after read from queue)" unchecked. A tMomRollback and a tMomCommit. But when these components run (and it doesn't seem to matter which one), the messages are still left "uncommitted" on the queue, according to MQ Explorer. There's (at least) two issues I have here. Firstly, tMomCommit and tMomRollback don't appear to be working as I'd expect them to. This appears to be the as raised in jira as TDI-8554. My next approach is going to be to put it in a loop rather than "Keep Listening", but any suggestions or help are welcome. Secondly, to exit this job, I need to kill the VM (Kill from studio, Ctrl-C from command line, etc), which means I can't exit cleanly. That's been raised in jira as TDI-4553. The only way I can see to deal with that is again, to make the loop myself so I can have an exit condition, or to use Runtime.addShutdownHook()... and that looks like way too much hassle for me at the moment.