tags:

views:

169

answers:

1

We have messages coming in over a WebSphere MQ queue. It takes a long time before we receive the message.

Is there a simple, easy way of tracking when a message gets received/picked up?

+3  A: 

When the message is put, you can request Confirmation on Delivery. When the message is consumed, a report message is delivered to the Reply-To Queue and Reply-To QMgr that were set in the original message. This is relatively easy if you are using the C or Java procedural interfaces or WMQ v7.0 with any language. The report options are set like any other message option prior to the PUT. http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/topic/com.ibm.mq.csqzak.doc/fr13320_.htm

In the case of JMS and WMQ v7.0 the MQMD properties have all been exposed as JMS Message Properties and you can set or read them that way. http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/topic/com.ibm.mq.csqzaw.doc/jm25500_.htm

There is another, less simple but MUCH more detailed, approach you may consider. The MA0W SupportPac ( http://www-1.ibm.com/support/docview.wss?rs=171&uid=swg24010343&loc=en_US&cs=utf-8&lang=en ) is a trace exit. This trace has extremely fine control and you can enable it for a single PID, for specific queues or channels, etc. It will give you API timings so you will be able to see whether the time is being spent between API calls or in the API call itself. In other words, did the program wait 10 seconds between API calls or did the GET take 10 seconds to complete? If you are getting messages rolled back due to filling the transaction log and then re-read this can cause delays that are pretty transparent unless you have a trace.

T.Rob