AnsweredAssumed Answered

Need clarification on MQ JMS Concurrency, Transacted, Acknowledgement

Question asked by SatyaKomatineni3761 on Sep 9, 2016
Latest reply on Sep 19, 2016 by James Ahlborn

A combination of "concurrency" setting and "transacted" setting is causing messages to stay on the queue for TOO long when applied to long running processes:


Please read:


JMS Concurrency setting "0": Does it mean concurrency ON or OFF?


The setting of "0", I read, allows ANY number of concurrent processes to run in parallel. So I assume this setting means "ON"


Documentation is very confusing how this setting interacts with Transacted, and Acknowledgement.


How is "acknowledgement" different from "commit or rollback?




On a JMS listener if concurrency is set to 1, and Transacted is set to OFF, as we expect this process to run a long time we want to tell MQ we are good and the message can be removed from the queue when the process starts.


However the queue is behaving as if the transaction is ON and keeps the message until the process completes which could last hours and hours. And that is increasing the number of messages on the queues when we don't expect them to.


These are just trigger messages.


we believe this may be happening because the setting of "concurrency" and "Transact" are behaving interdependently when they should be impacting, perhaps, independently each other.


For example if "Transacted" is OFF, irrespective of Concurrency or not, tell MQ that message has been handled. If Transacted is ON, irrespective of Concurrency let the message wait.


when we set concurrency to 1, we could not get the behavior of "Transact = OFF" whatever we do!