How to Trace Message Route in Websphere MQ ?

Suppose we have a setup of distributed queueing system. The sending end application is putting message to a remote queue, which inturn uses the transmission queue configured with it to post the message to the local queue of destination queuemanager using the sender-receiver channel pairs over the network.

This message tracking can be done by using the MQ provided “dspmqrte” command which is the MQ traceroute application which assists us in ruling out the possibilities of any issue in the message movement in the given distributed queueing setup.

We can use dspmqrte to help determine the route a message has taken through a queue manager network. The WebSphere MQ display route application generates and puts a trace-route message into a queue manager network. As the trace-route message travels through the queue manager network, activity information is recorded. When the trace-route message reaches it's target queue the activity information is collected by the WebSphere MQ display route application and displayed.

Examples

1.The following command puts a trace-route message into a queue manager network with the target queue specified as TARGET.Q. Providing queue managers on route are enabled for activity recording, activity reports are generated. Depending on the queue manager attribute, ACTIVREC, activity reports are either delivered to the reply-to queue ACT.REPORT.REPLY.Q, or are delivered to a system queue. The trace-route message is discarded on arrival at the target queue.

dspmqrte -q TARGET.Q -rq ACT.REPORT.REPLY.Q
Providing one or more activity reports are delivered to the reply-to queue, ACT.REPORT.REPLY.Q, the WebSphere MQ display route application orders and displays the activity information.

2.The following command puts a trace-route message into a queue manager network with the target queue specified as TARGET.Q. Activity information is accumulated within the trace-route message, but activity reports are not generated. On arrival at the target queue the trace-route message is discarded. Depending on the value of the target queue manager attribute, ROUTEREC, a trace-route reply message can be generated and delivered to either the reply-to queue, TRR.REPLY.TO.Q, or to a system queue.

dspmqrte -ac -ar -ro discard -rq TRR.REPLY.TO.Q -q TARGET.Q
Providing a trace-route reply message is generated and is delivered to the reply-to queueTRR.REPLY.TO.Q, the WebSphere MQ display route application orders and displays the activity information that was accumulated in the trace-route message.

Scenarios :                                          

Create a point to point setup as below

Sender end : On QM1, Remote queue as RQ, Transmission Queue X1, Sender channel to QM2 as QM1TOQM2

Receiver end : On QM2, Local Queue as LQ , Receiver channel  QM1TOQM2

Scenario 1: When everything is fine, the traceroute yields below output :

mqm@satmqw01:~> dspmqrte -m QM1 -q A2 -v outline
AMQ8653: DSPMQRTE command started with options '-m QM1 -q A2 -v outline'.
AMQ8659: DSPMQRTE command successfully put a message on queue 'XMIT1', queue manager 'QM1'.
AMQ8674: DSPMQRTE command is now waiting for information to display.
--------------------------------------------------------------------------------
Activity:
 ApplName: 'dspmqrte                    '
 Operation:
  OperationType: Put
  QMgrName: 'QM1                                             '
  QName: 'A2                                              '
  ResolvedQName: 'XMIT1                                           '
  RemoteQName: 'A2                                              '
  RemoteQMgrName: 'QM2                                             '
--------------------------------------------------------------------------------
Activity:
 ApplName: 'runmqchl                    '
 Operation:
  OperationType: Get
  QMgrName: 'QM1                                             '
  QName: 'XMIT1                                           '
  ResolvedQName: 'XMIT1                                           '

 Operation:
  OperationType: Send
  QMgrName: 'QM1                                             '
  RemoteQMgrName: 'QM2                                             '
  ChannelName: 'QM1TOQM2            '
  ChannelType: Sender
  XmitQName: 'XMIT1      
                                      '

Scenario 2 : When the sender channel is stopped

mqm@satmqw01:~> dspmqrte -m QM1 -q A2 -v outline
AMQ8653: DSPMQRTE command started with options '-m QM1 -q A2 -v outline'.
AMQ8659: DSPMQRTE command successfully put a message on queue 'XMIT1', queue manager 'QM1'.
AMQ8674: DSPMQRTE command is now waiting for information to display.
--------------------------------------------------------------------------------
Activity:
 ApplName: 'dspmqrte                    '
 Operation:
  OperationType: Put
  QMgrName: 'QM1                                             '
  QName: 'A2                                              '
  ResolvedQName: 'XMIT1                                           '
  RemoteQName: 'A2                                              '
  RemoteQMgrName: 'QM2                                             '


Scenario 3: When the transmission queue is no present or altered in remote queue defination:

mqm@satmqw01:~> dspmqrte -m QM1 -q A2 -v outline
AMQ8653: DSPMQRTE command started with options '-m QM1 -q A2 -v outline'.
AMQ8681: DSPMQRTE command has detected an error, reason 2196 'MQRC_UNKNOWN_XMIT_Q'.
AMQ8668: DSPMQRTE command could not open queue 'A2', queue manager 'QM1'.
AMQ8658: DSPMQRTE command failed to put a message on the target queue.

Comments