WebSphere MQ queue adapter and transactions


I am trying to use the listener-notification framework for retrieving messages on a webSphere MQ 5.3 queue, with webMethods Websphere MQ adapter v6.0 and IS 6.0.1 on Windows

How can I ensure that a message is removed from the MQ queue only AFTER the listener notification service has processed the message successfully? This can become crucial if webMethods IS goes down immediately after picking the message up from the webSphere MQ queue. If the message has already been removed from the MQ in that case, it will be lost forever.

Any inputs greatly appreciated.

The Listener notification publishes the message to the broker which is persisted which then sends an ack back to the IS server which in turn deletes the message off the MQ queue. You won’t lose any messages but it is possible to get a duplicate. It is pretty rare but if the message is persisted to broker and broker tries to send the ack back but the IS server crashes then the message will get reprocessed.

Thanks Mark.

Unfortunately, I do not have access to the Broker. I can only use the IS. Is it possible to do this using just the IS ?


Should work the same, the IS server will use its local document stores instead of the broker, same concept though will persist then ack back and then delete. But I would highly recommend getting the broker and using it if you can.


I am fairly new to this - how can the IS ‘ack back’ to the MQ ? Can you point me to the relevant documentation ? We didn’t find the ‘ack’ concept in the MQ Adapter documentation.


It doesn’t ack back to mq. The IS dispatcher handles the persisting of messages. Once it successfully persists the messages it lets the calling service know, in this case the notification service. The notification service then deletes the message off of mq. The JDBC, JMS and the MQ 6.0 adapter all work pretty much the same way in this regard. You should view the pub/sub dev guide for more info on how the dispatcher works.