Printing a summary of the runtime state of all messaging engines running in a cell
Use scripting to list the details of all messaging engines in all buses.
The following script can be used to print a summary in XML form of the runtime state of all messaging engines running in a cell. It goes down as far as the depths of individual items, such as queue points, remote queue points, publication points, subscriptions, mediation points, and link transmitters. However, this script does not print out details of individual messages. It should be run against the deployment manager to list out all messaging engines in all buses.
Tasks
- Create your script using a text editor.
- Run the script against the deployment manager of the cell:
DMGR_PROFILE/bin/wsadmin.sh -lang jython -f printSIBusSummary.py output.xml
Example
This example provides a sample script, with sample output.
# Sample program # * (C) COPYRIGHT International Business Machines Corp., 2008, 2009 # * All Rights Reserved * Licensed Materials - Property of IBM # * # * This sample program is provided AS IS and may be used, executed, # * copied and modified without royalty payment by customer # * # * (a) for its own instruction and study, # * (b) in order to develop applications designed to run with an IBM # * WebSphere product for the customer's own internal use. # # Version: 1.02 # # Information: # This script prints an XML summary of the runtime information available # for all queue points, publication points, mediation points, SIBus # links and WMQ links. # The script should be run against the deployment manager of the cell, # so that output is available from all running messaging engines in all buses. # The script collects the same information that can be displayed in via the # administrative console. # The following output is only available when the script is executed against # a WAS v7 environment: # - Service integration bus link information # - IBM MQ link information # # Usage: # UNIX, Linux, z/OS: # <DMGR_PROFILE>/bin/wsadmin.sh -lang jython -f printSIBusSummary.py <OUTFILE.XML> # Windows: # <DMGR_PROFILE>\bin\wsadmin.bat -lang jython -f printSIBusSummary.py <OUTFILE.XML> # Class to print an error out in full (with stack) to STDERR, as well as a short summary # within the XML output. An integer is assigned to each error, to help match up the two. class ErrorTracker: errorCount = 0 # Helper method to print exception details as an error attribute in a tag def printErrorAndCloseTag(self, exception_tuple, oneLine): self.errorCount += 1 # Print the error to STDERR sys.stderr.write("ERROR [" + str(self.errorCount) + "]:\n") sys.excepthook(exception_tuple[0],exception_tuple[1],exception_tuple[2]) # Print a summary of the error to the output file out.write(' error="[' + str(self.errorCount) + ']: ') out.write(str(exception_tuple[0]).strip()) if exception_tuple[1] != None: out.write(': ' + str(exception_tuple[1]).strip()) if oneLine == 1: out.write('"/>\n') else: out.write('">\n') # Single global instance of error tracker et = ErrorTracker() # Helper method to get a JMX attribute in string form def getStrAttr(mBean, attr): val = AdminControl.getAttribute_jmx(mBean, attr) if val == None: val = '' else: val = str(val) return val # Helper method to get the return value of JMX method in string form def getStrReturnVal(mBean, method): val = AdminControl.invoke_jmx(mBean, method, [], []) if val == None: val = '' else: val = str(val) return val # Helper toString method to handle None values as empty strings def toStr(val): if val == None: val = '' else: val = str(val) return val # Messaging engine class wraps an ME, maps its name to/from a UUID, # and contains all the methods we used to print out the runtime state # of that messaging engines class MessagingEngine: "A class for printing a runtime summary of a messaging engine" # Constructor def __init__(self, bus, name, uuid): self.bus = bus self.name = name self.uuid = uuid # Method to print a summary of the runtime state of this messaging engine # - this is a the entry point into the class (other methods are logically private) def printRuntimeStateXML(self, indent): # Print the start of the tag (leaving room for additional properties) out.write(indent + '<MessagingEngine name="' + self.name + '" uuid="' + self.uuid + '"') meMBean = None try: # First lookup our MBean meLookupName = AdminControl.makeObjectName('WebSphere:type=SIBMessagingEngine,name=' + self.name + ',*') meMBeans = AdminControl.queryNames_jmx(meLookupName, None) if (meMBeans == None) or (meMBeans.size() == 0): # Just an empty messaging engine out.write(' state="Unknown (no MBean found)">\n') elif meMBeans.size() == 1: # Save a ref to the MBean meMBean = meMBeans[0] # Complete the entry tag out.write(' state="' + AdminControl.invoke_jmx(meMBean, "state", [], []) + '"') out.write(' activeServer="' + meMBean.getKeyProperty("process") + '"') out.write('>\n') else: # We only expect to zero/one MBean raise Exception, "Found " + str(len(meMBeans)) + " MBeans for messaging engine. Expected 1" except: et.printErrorAndCloseTag(sys.exc_info(), 0) # Iterate through the contents if (meMBean != None): self.printQueuePointsXML(meMBean, indent + " ") self.printRemoteQueuePointsXML(meMBean, indent + " ") self.printMediationPointsXML(meMBean, indent + " ") self.printRemoteMediationPointsXML(meMBean, indent + " ") self.printPublicationPointsXML(meMBean, indent + " ") self.printRemotePublicationPointsXML(meMBean, indent + " ") self.printRemoteSubscriptionPointsXML(meMBean, indent + " ") self.printBusLinks(meMBean, indent + " ") self.printWMQLinks(meMBean, indent + " ") # Complete our tag out.write(indent + "</MessagingEngine>\n") # Print a summary of all the queue points for the messaging engine, # using the supplied ME MBean looked up by the caller def printQueuePointsXML(self, meMBean, indent): qpMBeans = None out.write(indent + "<QueuePoints") try: # Get a list of queue point MBeans qpLookupName = AdminControl.makeObjectName('WebSphere:type=SIBQueuePoint,SIBMessagingEngine=' + self.name + ',*') qpMBeans = AdminControl.queryNames_jmx(qpLookupName, None) out.write('>\n') # Complete the tag as lookup was successful except: et.printErrorAndCloseTag(sys.exc_info(), 0) # Run through each one for qpMBean in qpMBeans: rqps = {} # Directory of all RQPs for this queue point oneLineTag = 0 out.write(indent + " <QueuePoint") try: out.write(' name="' + qpMBean.getKeyProperty("name") + '@' + self.name + '"') qpState = getStrAttr(qpMBean, "state") out.write(' state="' + qpState + '"') out.write(' depth="' + getStrAttr(qpMBean, "depth") + '"') hmt = AdminControl.getAttribute_jmx(qpMBean, "highMessageThreshold") if (hmt != None) and (hmt == java.lang.Long.MAX_VALUE): hmt = "MAX_VALUE" out.write(' highMessageThreshold="' + str(hmt) + '"') out.write(' sendAllowed="' + getStrAttr(qpMBean, "sendAllowed") + '"') # Only attempt to get additional details for active queue points if qpState == 'ACTIVE': # Get a list of inbound receivers, for remote queue points inboundReceivers = AdminControl.invoke_jmx(qpMBean, "listInboundReceivers", [], []) # Get a list of remote consumer transmitters, for remote queue points consumerTransmitters = AdminControl.invoke_jmx(qpMBean, "listRemoteConsumerTransmitters", [], []) # Add RQPs for all inbound receivers for ir in inboundReceivers: uuid = ir.getRemoteEngineUuid() if rqps.has_key(uuid): rqp = rqps[uuid] else: rqp = KnownRemoteQueuePoint(qpMBean, uuid) rqps[uuid] = rqp rqp.inboundReceiver = ir # Add RQPs for all consumer transmitters for ct in consumerTransmitters: uuid = ct.getRemoteEngineUuid() if rqps.has_key(uuid): rqp = rqps[uuid] else: rqp = KnownRemoteQueuePoint(qpMBean, uuid) rqps[uuid] = rqp rqp.consumerTransmitter = ct # If we do not have any RQPs then we can terminate the tag on this line if len(rqps.keys()) == 0: out.write('/>\n') oneLineTag = 1 else: out.write('>\n') # We need a full tag except: et.printErrorAndCloseTag(sys.exc_info(), 0) # Process each RQP we found for rqpUuid in rqps.keys(): rqp = rqps[rqpUuid] rqp.printSummaryXML(indent + " ") # Complete our QueuePoint tag if oneLineTag == 0: out.write(indent + " </QueuePoint>\n") # Complete our QueuePoints tag out.write(indent + "</QueuePoints>\n") # Print a summary of all the remote queue points for the messaging engine, # using the supplied ME MBean looked up by the caller def printRemoteQueuePointsXML(self, meMBean, indent): rqpMBeans = None out.write(indent + "<RemoteQueuePoints") try: # Get a list of remote queue point MBeans rqpLookupName = AdminControl.makeObjectName('WebSphere:type=SIBRemoteQueuePoint,SIBMessagingEngine=' + self.name + ',*') rqpMBeans = AdminControl.queryNames_jmx(rqpLookupName, None) out.write('>\n') # Complete the tag as lookup was successful except: et.printErrorAndCloseTag(sys.exc_info(), 0) # Run through each one for rqpMBean in rqpMBeans: oneLineTag = 0 out.write(indent + " <RemoteQueuePoint") try: out.write(' name="' + rqpMBean.getKeyProperty("name") + '@' + self.name + '"') remoteMEuuid = getStrAttr(rqpMBean, "remoteMessagingEngineUuid") if (mesByUUID.has_key(remoteMEuuid)): remoteMEName = mesByUUID[remoteMEuuid].name else: remoteMEName = "Unknown" out.write(' remoteME="' + remoteMEName + '"') out.write(' remoteMEUUID="' + remoteMEuuid + '"') # Get outbound transmitter details, if one exists currentOutboundMessages = 0 outboundMessagesSent = 0 outboundTransmitter = AdminControl.invoke_jmx(rqpMBean, "getOutboundTransmitter", [], []) if (outboundTransmitter != None): currentOutboundMessages = outboundTransmitter.getDepth() outboundMessagesSent = outboundTransmitter.getNumberOfMessagesSent() out.write(' currentOutboundMessages="' + str(currentOutboundMessages) + '"') out.write(' outboundMessageSent="' + str(outboundMessagesSent) + '"') # Get remote consumer receiver, if one exists remoteConsumerReceiver = AdminControl.invoke_jmx(rqpMBean, "getRemoteConsumerReceiver", [], []) currentMessageRequests = 0 completedMessageRequests = 0 messageRequestsIssued = 0 if (remoteConsumerReceiver != None): currentMessageRequests = remoteConsumerReceiver.getNumberOfActiveRequests() completedMessageRequests = remoteConsumerReceiver.getNumberOfCompletedRequests() messageRequestsIssued = remoteConsumerReceiver.getNumberOfRequestsIssued() out.write(' currentMessageRequests="' + str(currentMessageRequests) + '"') out.write(' completedMessageRequests="' + str(completedMessageRequests) + '"') out.write(' messageRequestsIssued="' + str(messageRequestsIssued) + '"') # Always one line for remote queue points out.write('/>\n') except: et.printErrorAndCloseTag(sys.exc_info(), 1) # Complete our QueuePoints tag out.write(indent + "</RemoteQueuePoints>\n") # Print a summary of all the remote publication points for the messaging engine, # using the supplied ME MBean looked up by the caller def printRemotePublicationPointsXML(self, meMBean, indent): rppMBeans = None out.write(indent + "<RemotePublicationPoints") try: # Get a list of remote queue point MBeans rppLookupName = AdminControl.makeObjectName('WebSphere:type=SIBRemotePublicationPoint,SIBMessagingEngine=' + self.name + ',*') rppMBeans = AdminControl.queryNames_jmx(rppLookupName, None) out.write('>\n') # Complete the tag as lookup was successful except: et.printErrorAndCloseTag(sys.exc_info(), 0) # Run through each one for rppMBean in rppMBeans: oneLineTag = 0 out.write(indent + " <RemotePublicationPoint") try: out.write(' name="' + rppMBean.getKeyProperty("name") + '@' + self.name + '"') remoteMEuuid = getStrAttr(rppMBean, "remoteMessagingEngineUuid") if (mesByUUID.has_key(remoteMEuuid)): remoteMEName = mesByUUID[remoteMEuuid].name else: remoteMEName = "Unknown" out.write(' remoteME="' + remoteMEName + '"') out.write(' remoteMEUUID="' + remoteMEuuid + '"') # Get outbound transmitter details, if one exists currentOutboundMessages = 0 outboundMessagesSent = 0 outboundTransmitters = AdminControl.invoke_jmx(rppMBean, "listOutboundTransmitters", [], []) if (outboundTransmitters != None): for outboundTransmitter in outboundTransmitters: currentOutboundMessages += outboundTransmitter.getDepth() outboundMessagesSent += outboundTransmitter.getNumberOfMessagesSent() out.write(' currentOutboundMessages="' + str(currentOutboundMessages) + '"') out.write(' outboundMessageSent="' + str(outboundMessagesSent) + '"') # Always one line for remote queue points out.write('/>\n') except: et.printErrorAndCloseTag(sys.exc_info(), 1) # Complete our RemotePublicationPoints tag out.write(indent + "</RemotePublicationPoints>\n") # Print a summary of all the remote subscription points for the messaging engine, # using the supplied ME MBean looked up by the caller def printRemoteSubscriptionPointsXML(self, meMBean, indent): rspMBeans = None out.write(indent + "<RemoteSubscriptionPoints") try: # Get a list of remote queue point MBeans rspLookupName = AdminControl.makeObjectName('WebSphere:type=SIBRemoteSubscriptionPoint,SIBMessagingEngine=' + self.name + ',*') rspMBeans = AdminControl.queryNames_jmx(rspLookupName, None) out.write('>\n') # Complete the tag as lookup was successful except: et.printErrorAndCloseTag(sys.exc_info(), 0) # Run through each one for rspMBean in rspMBeans: oneLineTag = 0 out.write(indent + " <RemoteSubscriptionPoint") try: out.write(' name="' + rspMBean.getKeyProperty("name") + '"') out.write(' topicSpace="' + getStrReturnVal(rspMBean, "getTopicSpace") + '"') remoteMEuuid = getStrAttr(rspMBean, "remoteMessagingEngineUuid") if (mesByUUID.has_key(remoteMEuuid)): remoteMEName = mesByUUID[remoteMEuuid].name else: remoteMEName = "Unknown" out.write(' remoteME="' + remoteMEName + '"') out.write(' remoteMEUUID="' + remoteMEuuid + '"') # Get remote consumer receiver, if one exists remoteConsumerReceiver = AdminControl.invoke_jmx(rspMBean, "getRemoteConsumerReceiver", [], []) currentMessageRequests = 0 completedMessageRequests = 0 messageRequestsIssued = 0 if (remoteConsumerReceiver != None): currentMessageRequests = remoteConsumerReceiver.getNumberOfActiveRequests() completedMessageRequests = remoteConsumerReceiver.getNumberOfCompletedRequests() messageRequestsIssued = remoteConsumerReceiver.getNumberOfRequestsIssued() out.write(' currentMessageRequests="' + str(currentMessageRequests) + '"') out.write(' completedMessageRequests="' + str(completedMessageRequests) + '"') out.write(' messageRequestsIssued="' + str(messageRequestsIssued) + '"') # Always one line for remote queue points out.write('/>\n') except: et.printErrorAndCloseTag(sys.exc_info(), 1) # Complete our RemotePublicationPoints tag out.write(indent + "</RemoteSubscriptionPoints>\n") # Print a summary of all the mediation points for the messaging engine, # using the supplied ME MBean looked up by the caller def printMediationPointsXML(self, meMBean, indent): mpMBeans = None out.write(indent + "<MediationPoints") try: # Get a list of mediation point MBeans mpLookupName = AdminControl.makeObjectName('WebSphere:type=SIBMediationPoint,SIBMessagingEngine=' + self.name + ',*') mpMBeans = AdminControl.queryNames_jmx(mpLookupName, None) out.write('>\n') # Complete the tag as lookup was successful except: et.printErrorAndCloseTag(sys.exc_info(), 0) # Run through each one for mpMBean in mpMBeans: out.write(indent + " <MediationPoint") try: out.write(' name="' + mpMBean.getKeyProperty("name") + '@' + self.name + '"') mpState = getStrAttr(mpMBean, "currentState") out.write(' status="' + mpState + '"') out.write(' depth="' + getStrAttr(mpMBean, "depth") + '"') hmt = AdminControl.getAttribute_jmx(mpMBean, "highMessageThreshold") if (hmt != None) and (hmt == java.lang.Long.MAX_VALUE): hmt = "MAX_VALUE" out.write(' highMessageThreshold="' + str(hmt) + '"') out.write(' sendAllowed="' + getStrAttr(mpMBean, "sendAllowed") + '"') out.write('/>\n') except: et.printErrorAndCloseTag(sys.exc_info(), 1) # Complete our QueuePoints tag out.write(indent + "</MediationPoints>\n") # Print a summary of all the remote mediation points for the messaging engine, # using the supplied ME MBean looked up by the caller def printRemoteMediationPointsXML(self, meMBean, indent): rmpMBeans = None out.write(indent + "<RemoteMediationPoints") try: # Get a list of remote mediation point MBeans rmpLookupName = AdminControl.makeObjectName('WebSphere:type=SIBRemoteMediationPoint,SIBMessagingEngine=' + self.name + ',*') rmpMBeans = AdminControl.queryNames_jmx(rmpLookupName, None) out.write('>\n') # Complete the tag as lookup was successful except: et.printErrorAndCloseTag(sys.exc_info(), 0) # Run through each one for rmpMBean in rmpMBeans: oneLineTag = 0 out.write(indent + " <RemoteMediationPoint") try: out.write(' name="' + rmpMBean.getKeyProperty("name") + '@' + self.name + '"') remoteMEuuid = getStrAttr(rmpMBean, "remoteMessagingEngineUuid") if (mesByUUID.has_key(remoteMEuuid)): remoteMEName = mesByUUID[remoteMEuuid].name else: remoteMEName = "Unknown" out.write(' remoteME="' + remoteMEName + '"') out.write(' remoteMEUUID="' + remoteMEuuid + '"') # Get outbound transmitter details, if one exists currentOutboundMessages = 0 outboundMessagesSent = 0 outboundTransmitter = AdminControl.invoke_jmx(rmpMBean, "getOutboundTransmitter", [], []) if (outboundTransmitter != None): currentOutboundMessages = outboundTransmitter.getDepth() outboundMessagesSent = outboundTransmitter.getNumberOfMessagesSent() out.write(' currentOutboundMessages="' + str(currentOutboundMessages) + '"') out.write(' outboundMessageSent="' + str(outboundMessagesSent) + '"') # Always one line for remote mediation points out.write('/>\n') except: et.printErrorAndCloseTag(sys.exc_info(), 1) # Complete our MediationPoints tag out.write(indent + "</RemoteMediationPoints>\n") # Print a summary of all the publication points for the messaging engine, # using the supplied ME MBean looked up by the caller def printPublicationPointsXML(self, meMBean, indent): ppMBeans = None out.write(indent + "<PublicationPoints") try: # Get a list of queue point MBeans ppLookupName = AdminControl.makeObjectName('WebSphere:type=SIBPublicationPoint,SIBMessagingEngine=' + self.name + ',*') ppMBeans = AdminControl.queryNames_jmx(ppLookupName, None) out.write('>\n') # Complete the tag as lookup was successful except: et.printErrorAndCloseTag(sys.exc_info(), 0) # Run through each one for ppMBean in ppMBeans: inboundReceivers = [] subscriptions = [] out.write(indent + " <PublicationPoint") depth = None try: depth = getStrAttr(ppMBean, "depth") except: # Attribute does not exist pass try: out.write(' name="' + ppMBean.getKeyProperty("name") + '@' + self.name + '"') if depth != None: out.write(' depth="' + depth + '"') hmt = AdminControl.getAttribute_jmx(ppMBean, "highMessageThreshold") if (hmt != None) and (hmt == java.lang.Long.MAX_VALUE): hmt = "MAX_VALUE" out.write(' highMessageThreshold="' + str(hmt) + '"') out.write(' sendAllowed="' + getStrAttr(ppMBean, "sendAllowed") + '"') # Get a list of inbound receivers (remote publication points) inboundReceivers = AdminControl.invoke_jmx(ppMBean, "listInboundReceivers", [], []) # Get a list of subscriptions subscriptions = AdminControl.invoke_jmx(ppMBean, "getSubscriptions", [], []) # Complete the tag out.write('>\n') except: et.printErrorAndCloseTag(sys.exc_info(), 0) # Run through each remote publication point (inbound receiver) for ir in inboundReceivers: out.write(indent + ' <KnownRemotePublicationPoint') try: remoteMEuuid = ir.getRemoteEngineUuid() if mesByUUID.has_key(remoteMEuuid): remoteMEname = mesByUUID[remoteMEuuid].name else: remoteMEname = "Unknown" out.write(' me="' + remoteMEname + '"') out.write(' meUUID="' + remoteMEuuid + '"') out.write(' currentInboundMessages="' + str(ir.getDepth()) + '"') out.write(' inboundMessagesReceived="' + str(ir.getNumberOfMessagesReceived()) + '"') out.write('/>\n') except: et.printErrorAndCloseTag(sys.exc_info(), 1) # Run through each subscription depthTally = 0 for sub in subscriptions: oneLineTag = 0 rsps = [] # remote subscription points out.write(indent + ' <Subscription') try: out.write(' subscriberId="' + toStr(sub.getSubscriberId()) + '"') subDepth = sub.getDepth() depthTally = depthTally + subDepth out.write(' depth="' + str(subDepth) + '"') # Write any selector selector = sub.getSelector() if selector != None: out.write(' selector="' + sub.getSelector() + '"') # Write topics topics = sub.getTopics() if (topics != None): out.write(' topics="') sep = '' for topic in topics: if (topic == None): topic = '' out.write(topic + sep) sep = ',' out.write('"') # Get a list of remote subscription points rsps = AdminControl.invoke_jmx(ppMBean, "listRemoteConsumerTransmitters", [sub], ['com.ibm.websphere.sib.admin.SIBSubscription']) # Check if we have children, or can just close the tag here if len(rsps) == 0: out.write('/>\n') oneLineTag = 1 else: out.write('>\n') except: et.printErrorAndCloseTag(sys.exc_info(), 0) # Do we have remote sub points? for rsp in rsps: out.write(indent + ' <KnownRemoteSubscriptionPoint') try: remoteMEuuid = rsp.getRemoteEngineUuid() if mesByUUID.has_key(remoteMEuuid): remoteMEname = mesByUUID[remoteMEuuid].name else: remoteMEname = "Unknown" out.write(' me="' + remoteMEname + '"') out.write(' meUUID="' + remoteMEuuid + '"') out.write(' currentMessageRequests="' + str(rsp.getDepth()) + '"') out.write(' completedMessageRequests="' + str(rsp.getNumberOfCompletedRequests()) + '"') out.write(' messageRequestsReceived="' + str(rsp.getNumberOfRequestsReceived()) + '"') out.write('/>\n') except: et.printErrorAndCloseTag(sys.exc_info(), 1) # Close the subscription tag if required if oneLineTag == 0: out.write(indent + ' </Subscription>\n') # Complete our PublicationPoint tag # give ourselves 50 messages breathing room to try minimise false positives depthCheck = int(depth) - 50 out.write(indent + " <DepthTally>" + str(depthTally)) if depthTally < depthCheck: out.write(' - WARNING</DepthTally>\n') else: out.write(' - OK</DepthTally>\n') out.write(indent + " </PublicationPoint>\n") # Complete our PublicationPoints tag out.write(indent + "</PublicationPoints>\n") # Print a summary of all the SIBus links hosted on this messaging engine. # using the supplied ME MBean looked up by the caller def printBusLinks(self, meMBean, indent): glMBeans = None out.write(indent + "<BusLinks") try: # Get a list of link transmitter MBeans - will be empty for <V7.0 MEs glLookupName = AdminControl.makeObjectName('WebSphere:type=SIBGatewayLink,SIBMessagingEngine=' + self.name + ',*') glMBeans = AdminControl.queryNames_jmx(glLookupName, None) out.write('>\n') # Complete the tag as lookup was successful except: et.printErrorAndCloseTag(sys.exc_info(), 0) # Keep track of all link target UUIDs we've seen as local links, to exclude from the remote transmitter list localLinkUuids = {} # Run through each transmitter for glMBean in glMBeans: oneLineTag = 0 linkReceivers = [] targetUuid = glMBean.getKeyProperty("targetUuid") localLinkUuids[targetUuid] = 1 out.write(indent + " <BusLink") # First check we can query the foreign bus name... if this fails we are # talking to a < V7 messaging engine foreignBusName = None oldVersion = 0 try: foreignBusName = getStrReturnVal(glMBean, "getForeignBusName") except: oldVersion = 1 # Get the name (sometimes the returned name includes quotes) virtualLinkName = toStr(glMBean.getKeyProperty("name")) if not (virtualLinkName.find('"') == 0): virtualLinkName = '"' + virtualLinkName + '"' # Print the correct information based on the version if oldVersion: try: out.write(' name=' + virtualLinkName) out.write(' state="' + getStrReturnVal(glMBean, "getStatus") + '"') out.write('>\n') except: et.printErrorAndCloseTag(sys.exc_info(), 0) else: try: out.write(' name=' + virtualLinkName ) out.write(' foreignBus="' + foreignBusName + '"') stateString = AdminControl.invoke_jmx(glMBean, "getStatus", [], []) if stateString != None: out.write(' state="' + stateString + '"') linkReceivers = AdminControl.invoke_jmx(glMBean, "listLinkReceivers", [], []) if linkReceivers == None: linkReceivers = [] out.write('>\n') except: et.printErrorAndCloseTag(sys.exc_info(), 0) # Print out the link receivers for this link for lr in linkReceivers: out.write(indent + " <LinkReceiver") try: out.write(' state="' + lr.getState() + '"') receiverType = lr.getReceiverType() remoteMEuuid = lr.getForeignEngineUuid() if mesByUUID.has_key(remoteMEuuid): remoteMEname = mesByUUID[remoteMEuuid].name else: remoteMEname = "Unknown" out.write(' me="' + remoteMEname + '"') out.write(' meUUID="' + remoteMEuuid + '"') out.write(' receiverType="' + receiverType + '"') if receiverType == "PUBLICATION": out.write(' topicSpace="' + toStr(lr.getTargetDestination()) + '"') out.write(' currentInboundMessages="' + str(lr.getDepth()) + '"') out.write(' messagesReceived="' + str(lr.getNumberOfMessagesReceived()) + '"') timeSinceLastMessageReceived = lr.getTimeSinceLastMessageReceived() if timeSinceLastMessageReceived > 0: out.write(' timeSinceLastMessageReceived="' + str(timeSinceLastMessageReceived) + 'ms"') out.write(indent + "/>\n") except: et.printErrorAndCloseTag(sys.exc_info(), 1) # Print out the link transmitters for this link self.printLinkTransmittersXML(meMBean, targetUuid, {}, indent + ' ') # End the link tag out.write(indent + ' </BusLink>\n') # Just in case we have any orphaned link mBeans, print these out here self.printLinkTransmittersXML(meMBean, None, localLinkUuids, indent + ' ') # Complete our SIBLinks tag out.write(indent + "</BusLinks>\n") # Print a summary of SIBus link transmitters for the messaging engine, # using the supplied ME MBean looked up by the caller. # Either prints all transmitters with a particular target UUID, or # prints all transmitters excluding keys that exist in the excludeUuids hash. def printLinkTransmittersXML(self, meMBean, targetUuid, excludeUuids, indent): ltMBeans = None try: # Get a list of link transmitter MBeans - will be empty for <V7.0 MEs lookupString = 'WebSphere:type=SIBLinkTransmitter,SIBMessagingEngine=' + self.name if targetUuid != None: lookupString += ',targetUuid=' + targetUuid lookupString += ',*' ltLookupName = AdminControl.makeObjectName(lookupString) ltMBeans = AdminControl.queryNames_jmx(ltLookupName, None) except: out.write('<SIBLinkTransmitters') et.printErrorAndCloseTag(sys.exc_info(), 1) # Run through each transmitter for ltMBean in ltMBeans: # Check this one shouldn't be excluded transmitterTargetUuid = ltMBean.getKeyProperty("targetUuid") if not excludeUuids.has_key(transmitterTargetUuid): out.write(indent + "<LinkTransmitter") try: if (targetUuid == None): out.write(' foreignBus="' + getStrReturnVal(ltMBean, "getForeignBusName") + '"') out.write(' state="' + getStrReturnVal(ltMBean, "getState") + '"') out.write(' linkType="' + getStrReturnVal(ltMBean, "getLinkType") + '"') transmitterType = getStrReturnVal(ltMBean, "getTransmitterType") out.write(' transmitterType="' + transmitterType + '"') if transmitterType == "PUBLICATION": out.write(' topicSpace="' + getStrReturnVal(ltMBean, "getTargetDestination") + '"') putInhibited = AdminControl.invoke_jmx(ltMBean, "isPutInhibited", [], []) if putInhibited == 0: sendAllowed = 1 else: sendAllowed = 0 out.write(' sendAllowed="' + str(sendAllowed) + '"') out.write(' currentOutboundMessages="' + getStrReturnVal(ltMBean, "getDepth") + '"') out.write(' messagesSent="' + getStrReturnVal(ltMBean, "getNumberOfMessagesSent") + '"') timeSinceLastMessageSent = AdminControl.invoke_jmx(ltMBean, "getTimeSinceLastMessageSent", [], []) if timeSinceLastMessageSent > 0: out.write(' timeSinceLastMessageSent="' + str(timeSinceLastMessageSent) + 'ms"') # Always one line for link transmitters out.write('/>\n') except: et.printErrorAndCloseTag(sys.exc_info(), 1) # Print a summary of all the WMQ links hosted on this messaging engine # using the supplied ME MBean looked up by the caller def printWMQLinks(self, meMBean, indent): mqlMBeans = None out.write(indent + "<WMQLinks") try: # Get a list of WMQ Link MBeans - will be empty for <V7.0 MEs mqlLookupName = AdminControl.makeObjectName('WebSphere:type=SIBMQLink,SIBMessagingEngine=' + self.name + ',*') mqlMBeans = AdminControl.queryNames_jmx(mqlLookupName, None) out.write('>\n') # Complete the tag as lookup was successful except: et.printErrorAndCloseTag(sys.exc_info(), 0) # Run through each WMQ Link MBean found for mqlMBean in mqlMBeans: schlMBeans = [] rchlMBeans = [] # We may not be able to query msgs received as introduced at v7.0 msgsReceived = None try: msgsReceived = getStrReturnVal(mqlMBean, "getTotalLinkMessagesReceived") except: pass out.write(indent + " <WMQLink") try: # Get the targetUuid linkName = mqlMBean.getKeyProperty("name") out.write(' name="' + linkName + '"') out.write(' state="' + getStrReturnVal(mqlMBean, "getOverallStatus") + '"') if msgsReceived != None: out.write(' messagesReceived="' + msgsReceived + '"') # Get a list of WMQ link sender channel instances schlLookupName = AdminControl.makeObjectName('WebSphere:type=SIBMQLinkSenderChannel,SIBMessagingEngine=' + self.name + ',name=' + linkName + 'SNDR,*') schlMBeans = AdminControl.queryNames_jmx(schlLookupName, None) # Get a list of WMQ link receiver channel instances rchlLookupName = AdminControl.makeObjectName('WebSphere:type=SIBMQLinkReceiverChannel,SIBMessagingEngine=' + self.name + ',name=' + linkName + 'RCVR,*') rchlMBeans = AdminControl.queryNames_jmx(rchlLookupName, None) out.write('>\n') # Complete the opening tag except: et.printErrorAndCloseTag(sys.exc_info(), 0) # Iterate through the sender channels for schlMBean in schlMBeans: sxmitMBeans = [] out.write(indent + " <SenderChannel") try: stateObject = AdminControl.invoke_jmx(schlMBean, "getCurrentStatus", [], []) channelName = stateObject.getChannelName() out.write(' channelName="' + channelName + '"') out.write(' state="' + toStr(stateObject.getState()) + '"') out.write(' virtualQmgr="' + stateObject.getQueueManager() + '"') out.write(' ipAddress="' + toStr(stateObject.getIpAddress()) + '"') out.write(' messagesSent="' + toStr(stateObject.getNumberOfMessagesSent()) + '"') out.write(' currentLUWID="' + toStr(stateObject.getCurrentLUWID()) + '"') out.write(' currentSequenceNo="' + toStr(stateObject.getCurrentSequenceNumber()) + '"') out.write(' inDoubt="' + toStr(stateObject.getInDoubt()) + '"') # Get a list of WMQ link sender channel transmitter instances sxmitLookupName = AdminControl.makeObjectName('WebSphere:type=SIBMQLinkSenderChannelTransmitter,SIBMessagingEngine=' + self.name + ',name=' + channelName + ',*') sxmitMBeans = AdminControl.queryNames_jmx(sxmitLookupName, None) out.write('>\n') # Complete the opening tag except: et.printErrorAndCloseTag(sys.exc_info(), 0) # Iterate through the sender channel transmitters for sxmitMBean in sxmitMBeans: out.write(indent + " <SenderChannelTransmitter") # List of the known link transmitters knownLinkTransmitters = [] oneLineTag = 0 try: out.write(' status="' + getStrReturnVal(sxmitMBean, "getState") + '"') out.write(' currentOutboundMessages="' + getStrReturnVal(sxmitMBean, "getDepth") + '"') out.write(' messagesSent="' + getStrReturnVal(sxmitMBean, "getNumberOfMessagesSent") + '"') timeSinceLastMessageSent = AdminControl.invoke_jmx(sxmitMBean, "getTimeSinceLastMessageSent", [], []) if timeSinceLastMessageSent > 0: out.write(' timeSinceLastMessageSent="' + str(timeSinceLastMessageSent) + 'ms"') # List the known link transmitters knownLinkTransmitters = AdminControl.invoke_jmx(sxmitMBean, "listInboundReceivers", [], []) # Complete the tag if (knownLinkTransmitters == None) or (len(knownLinkTransmitters)) == 0: out.write('/>\n') # Complete the one-line tag oneLineTag = 1 else: out.write('>\n') except: et.printErrorAndCloseTag(sys.exc_info(), 1) # Print the known link transmitters if (oneLineTag == 0): for ir in knownLinkTransmitters: out.write(indent + ' <KnownRemoteSenderChannelTransmitter') try: remoteMEuuid = ir.getRemoteEngineUuid() if mesByUUID.has_key(remoteMEuuid): remoteMEname = mesByUUID[remoteMEuuid].name else: remoteMEname = "Unknown" out.write(' me="' + remoteMEname + '"') out.write(' meUUID="' + remoteMEuuid + '"') out.write(' currentInboundMessages="' + str(ir.getDepth()) + '"') out.write(' inboundMessagesReceived="' + str(ir.getNumberOfMessagesReceived()) + '"') out.write('/>\n') except: et.printErrorAndCloseTag(sys.exc_info(), 1) # Close the transmitter tag out.write(indent + " </SenderChannelTransmitter>\n") # Close the sender tag out.write(indent + " </SenderChannel>\n") # Iterate through the receiver channels for rchlMBean in rchlMBeans: out.write(indent + " <ReceiverChannel") statusEntries = [] try: out.write(' state="' + getStrReturnVal(rchlMBean,"getOverallStatus") + '"') # List the status of each instance statusEntries = AdminControl.invoke_jmx(rchlMBean, "getCurrentStatus", [], []) if (statusEntries == None): statusEntries = [] out.write('>\n') # Complete the opening tag except: et.printErrorAndCloseTag(sys.exc_info(), 0) # Print each entry for statusEntry in statusEntries: out.write(indent + " <ReceiverChannelStatus") try: out.write(' channelName="' + toStr(statusEntry.getChannelName()) + '"') out.write(' state="' + toStr(statusEntry.getState()) + '"') out.write(' qmgr="' + toStr(statusEntry.getQueueManager()) + '"') out.write(' ipAddress="' + toStr(statusEntry.getIpAddress()) + '"') out.write(' messagesReceived="' + toStr(statusEntry.getNumberOfMessagesReceived()) + '"') out.write(' currentLUWID="' + toStr(statusEntry.getCurrentLUWID()) + '"') out.write(' currentSequenceNo="' + toStr(statusEntry.getCurrentSequenceNumber()) + '"') out.write('/>\n') # Complete the tag except: et.printErrorAndCloseTag(sys.exc_info(), 1) # Close the tag out.write(indent + " </ReceiverChannel>\n") # Complete our WMQLink tag out.write(indent + " </WMQLink>\n") # Complete our WMQLinks tag out.write(indent + "</WMQLinks>\n") # A small class to help us agregate consumer-transmitter and # inbound-receiver information on a queue point, and hence build a # "known remote queue point" for each remote messaging engine # UUID that we have remote put/get state for. class KnownRemoteQueuePoint: "A class for printing a runtime summary of a known remote queue point" consumerTransmitter = None inboundReceiver = None def __init__ (self, qpMBean, uuid): self.uuid = uuid if mesByUUID.has_key(uuid): self.name = mesByUUID[uuid].name else: self.name = "Unknown" self.qpMBean = qpMBean # Print an XML tag summarising this KnownRemoteQueuePoint def printSummaryXML(self, indent): out.write(indent + '<KnownRemoteQueuePoint me="' + self.name + '" meUUID="' + self.uuid + '"') try: currentInboundMessages = 0 inboundMessagesReceived = 0 if self.inboundReceiver != None: currentInboundMessages = self.inboundReceiver.getDepth() inboundMessagesReceived = self.inboundReceiver.getNumberOfMessagesReceived() out.write(' currentInboundMessages="' + str(currentInboundMessages) + '"') out.write(' inboundMessagesReceived="' + str(inboundMessagesReceived) + '"') currentMessageRequests = 0 completedMessageRequests = 0 messageRequestsReceived = 0 if self.consumerTransmitter != None: currentMessageRequests = self.consumerTransmitter.getDepth() completedMessageRequests = self.consumerTransmitter.getNumberOfCompletedRequests() messageRequestsReceived = self.consumerTransmitter.getNumberOfRequestsReceived() out.write(' currentMessageRequests="' + str(currentMessageRequests) + '"') out.write(' completedMessageRequests="' + str(completedMessageRequests) + '"') out.write(' messageRequestsReceived="' + str(messageRequestsReceived) + '"') # Only need one line for this out.write('/>\n') except: et.printErrorAndCloseTag(sys.exc_info(), 1) # Script execution starts here ... # The only input parameter is the name of the output file. # Default to STDOUT if not specified if len(sys.argv) > 0: print "Writing output to", sys.argv[0] out = open(sys.argv[0], 'w') fileOpened = 1 else: out = sys.stdout fileOpened = 0 # Lookup all MEs in the configuration and build a ME UUID to name dictionary mesByUUID = {} mesByBus = {} mes = AdminConfig.list("SIBMessagingEngine").split("\n") for me in mes: # Remove carriage returns on Windows me = me.strip() # Construct an ME object meBus = AdminConfig.showAttribute(me, "busName") meName = AdminConfig.showAttribute(me, "name") meUUID = AdminConfig.showAttribute(me, "uuid") meObject = MessagingEngine(meBus, meName, meUUID) # Place the ME into the map by UUID mesByUUID[meUUID] = meObject # Place the ME into the list for this bus if (mesByBus.has_key(meBus)): meList = mesByBus[meBus] else: meList = [] meList.append(meObject) mesByBus[meBus] = meList # Iterate through the buses, and MEs within each bus try: out.write('<?xml version="1.0"?>\n') out.write('<SIBusSummary>\n') for busName in mesByBus.keys(): indent = ' ' out.write(indent + '<Bus name="' + busName + '">\n') meList = mesByBus[busName] for me in meList: me.printRuntimeStateXML(indent + ' ') out.write(indent + '</Bus>\n') out.write('</SIBusSummary>\n') finally: if (fileOpened): out.close()The following example shows sample output for the script.
<?xml version="1.0"?> <SIBusSummary> <Bus name="Bus2"> <MessagingEngine name="Node1.server1-Bus2" uuid="B04215B7389FDA8F" state="Started" activeServer="server1"> <QueuePoints> <QueuePoint name="Bus2Queue1@Node1.server1-Bus2" state="ACTIVE" depth="9" highMessageThreshold="50000" sendAllowed="1"/> <QueuePoint name="RemoteMediatedQueue1@Node1.server1-Bus2" state="ACTIVE" depth="5" highMessageThreshold="50000" sendAllowed="1"> <KnownRemoteQueuePoint me="Node1.server2-Bus2" meUUID="CC8EAD412746BA2A" currentInboundMessages="0" inboundMessagesReceived="0" currentMessageRequests="0" completedMessageRequests="0" messageRequestsReceived="0"/> </QueuePoint> <QueuePoint name="_PSIMP.PROXY.QUEUE_B04215B7389FDA8F@Node1.server1-Bus2" state="ACTIVE" depth="0" highMessageThreshold="50000" sendAllowed="1"> <KnownRemoteQueuePoint me="Node1.server2-Bus2" meUUID="CC8EAD412746BA2A" currentInboundMessages="0" inboundMessagesReceived="2" currentMessageRequests="0" completedMessageRequests="0" messageRequestsReceived="0"/> </QueuePoint> <QueuePoint name="_PTRM_B04215B7389FDA8F@Node1.server1-Bus2" state="ACTIVE" depth="0" highMessageThreshold="50000" sendAllowed="1"/> <QueuePoint name="_SYSTEM.Exception.Destination.Node1.server1-Bus2@Node1.server1-Bus2" state="ACTIVE" depth="3" highMessageThreshold="50000" sendAllowed="1"/> <QueuePoint name="_PSIMP.TDRECEIVER_B04215B7389FDA8F@Node1.server1-Bus2" state="ACTIVE" depth="0" h ighMessageThreshold="50000" sendAllowed="1"/> </QueuePoints> <RemoteQueuePoints> <RemoteQueuePoint name="_PSIMP.PROXY.QUEUE_CC8EAD412746BA2A@Node1.server1-Bus2" remoteME="Node1.server2-Bus2" remoteMEUUID="CC8EAD412746BA2A" currentOutboundMessages="0" outboundMessageSent="4" currentMessageRequests="0" completedMessageRequests="0" messageRequestsIssued="0"/> </RemoteQueuePoints> <MediationPoints> </MediationPoints> <RemoteMediationPoints> <RemoteMediationPoint name="RemoteMediatedQueue1@Node1.server1-Bus2" remoteME="Node1.server2-Bus2" remoteMEUUID="CC8EAD412746BA2A" currentOutboundMessages="0" outboundMessageSent="0"/> </RemoteMediationPoints> <PublicationPoints> <PublicationPoint name="Default.Topic.Space@Node1.server1-Bus2" depth="0" highMessageThreshold="50000" sendAllowed="1"> </PublicationPoint> </PublicationPoints> <BusLinks> <BusLink name="Bus1Bus2Link" foreignBus="Bus1" state="STARTED"> <LinkReceiver state="STARTED" me="Node1.server1-Bus1" meUUID="92FF69453638CD2F" receiverType="PUBLICATION" topicSpace="" currentInboundMessages="0" messagesReceived="4" timeSinceLastMessageReceived="18809ms" /> <LinkReceiver state="STARTED" me="cluster1.000-Bus1" meUUID="C96051A1F0F91AB3" receiverType="PUBLICATION" topicSpace="" currentInboundMessages="0" messagesReceived="0" /> <LinkReceiver state="STARTED" me="cluster1.001-Bus1" meUUID="122AAD73434FF5DA" receiverType="PUBLICATION" topicSpace="" currentInboundMessages="0" messagesReceived="0" /> <LinkReceiver state="STARTED" me="cluster1.000-Bus1" meUUID="C96051A1F0F91AB3" receiverType="PUBLICATION" topicSpace="" currentInboundMessages="0" messagesReceived="2" timeSinceLastMessageReceived="20091ms" /> <LinkReceiver state="STARTED" me="cluster1.001-Bus1" meUUID="122AAD73434FF5DA" receiverType="PUBLICATION" topicSpace="" currentInboundMessages="0" messagesReceived="0" /> <LinkTransmitter state="STARTED" linkType="SIBVirtualGatewayLink" transmitterType="QUEUE" sendAllowed="1" currentOutboundMessages="0" messagesSent="3" timeSinceLastMessageSent="17509ms"/> </BusLink> </BusLinks> <WMQLinks> <WMQLink name="MQBus1Link" state="RUNNING" messagesReceived="0"> <SenderChannel channelName="TO.PAB" state="STANDBY" virtualQmgr="WAS80" ipAddress="" messagesSent="0" currentLUWID="0" currentSequenceNo="0" inDoubt="0"> <SenderChannelTransmitter status="STARTED" currentOutboundMessages="0" messagesSent="0"> <KnownRemoteSenderChannelTransmitter me="Node1.server2-Bus2" meUUID="CC8EAD412746BA2A" currentInboundMessages="0" inboundMessagesReceived="0"/> </SenderChannelTransmitter> </SenderChannel> <ReceiverChannel state="INACTIVE"> </ReceiverChannel> </WMQLink> </WMQLinks> </MessagingEngine> <MessagingEngine name="Node1.server2-Bus2" uuid="CC8EAD412746BA2A" state="Started" activeServer="server2"> <QueuePoints> <QueuePoint name="_SYSTEM.Exception.Destination.Node1.server2-Bus2@Node1.server2-Bus2" state="ACTIVE" depth="0" highMessageThreshold="50000" sendAllowed="1"/> <QueuePoint name="_PSIMP.PROXY.QUEUE_CC8EAD412746BA2A@Node1.server2-Bus2" state="ACTIVE" depth="0" highMessageThreshold="50000" sendAllowed="1"> <KnownRemoteQueuePoint me="Node1.server1-Bus2" meUUID="B04215B7389FDA8F" currentInboundMessages="0" inboundMessagesReceived="12" currentMessageRequests="0" completedMessageRequests="0" messageRequestsReceived="0"/> </QueuePoint> <QueuePoint name="_PTRM_CC8EAD412746BA2A@Node1.server2-Bus2" state="ACTIVE" depth="0" highMessageThreshold="50000" sendAllowed="1"/> <QueuePoint name="_PSIMP.TDRECEIVER_CC8EAD412746BA2A@Node1.server2-Bus2" state="ACTIVE" depth="0" highMessageThreshold="50000" sendAllowed="1"/> </QueuePoints> <RemoteQueuePoints> <RemoteQueuePoint name="RemoteMediatedQueue1@Node1.server2-Bus2" remoteME="Node1.server1-Bus2" remoteMEUUID="B04215B7389FDA8F" currentOutboundMessages="0" outboundMessageSent="2" currentMessageRequests="0" completedMessageRequests="0" messageRequestsIssued="0"/> <RemoteQueuePoint name="_PSIMP.PROXY.QUEUE_B04215B7389FDA8F@Node1.server2-Bus2" remoteME="Node1.server1-Bus2" remoteMEUUID="B04215B7389FDA8F" currentOutboundMessages="0" outboundMessageSent="8" currentMessageRequests="0" completedMessageRequests="0" messageRequestsIssued="0"/> </RemoteQueuePoints> <MediationPoints> <MediationPoint name="RemoteMediatedQueue1@Node1.server2-Bus2" status="Started" depth="0" highMessageThreshold="50000" sendAllowed="1"/> </MediationPoints> <RemoteMediationPoints> </RemoteMediationPoints> <PublicationPoints> <PublicationPoint name="Default.Topic.Space@Node1.server2-Bus2" depth="0" highMessageThreshold="50000" sendAllowed="1"> </PublicationPoint> </PublicationPoints> <BusLinks> <BusLink name="Bus2:MQBus1" foreignBus="MQBus1"> <LinkTransmitter state="STARTED" linkType="SIBVirtualMQLink" transmitterType="QUEUE" sendAllowed="1" currentOutboundMessages="0" messagesSent="0"/> </BusLink> </BusLinks> <WMQLinks> </WMQLinks> </MessagingEngine> </Bus> <Bus name="Bus1"> <MessagingEngine name="Node1.server1-Bus1" uuid="92FF69453638CD2F" state="Started" activeServer="server1"> <QueuePoints> <QueuePoint name="_PTRM_92FF69453638CD2F@Node1.server1-Bus1" state="ACTIVE" depth="0" highMessageThreshold="50000" sendAllowed="1"/> <QueuePoint name="_SYSTEM.Exception.Destination.Node1.server1-Bus1@Node1.server1-Bus1" state="ACTIVE" depth="0" highMessageThreshold="50000" sendAllowed="1"/> <QueuePoint name="_PSIMP.PROXY.QUEUE_92FF69453638CD2F@Node1.server1-Bus1" state="ACTIVE" depth="0" highMessageThreshold="50000" sendAllowed="1"> <KnownRemoteQueuePoint me="cluster1.001-Bus1" meUUID="122AAD73434FF5DA" currentInboundMessages="0" inboundMessagesReceived="3" currentMessageRequests="0" completedMessageRequests="0" messageRequestsReceived="0"/> <KnownRemoteQueuePoint me="cluster1.000-Bus1" meUUID="C96051A1F0F91AB3" currentInboundMessages="0" inboundMessagesReceived="3" currentMessageRequests="0" completedMessageRequests="0" messageRequestsReceived="0"/> </QueuePoint> <QueuePoint name="_PSIMP.TDRECEIVER_92FF69453638CD2F@Node1.server1-Bus1" state="ACTIVE" depth="0" highMessageThreshold="50000" sendAllowed="1"/> <QueuePoint name="Bus1Queue1@Node1.server1-Bus1" state="ACTIVE" depth="3" highMessageThreshold="50000" sendAllowed="1"> <KnownRemoteQueuePoint me="cluster1.001-Bus1" meUUID="122AAD73434FF5DA" currentInboundMessages="0" inboundMessagesReceived="0" currentMessageRequests="0" completedMessageRequests="0" messageRequestsReceived="0"/> <KnownRemoteQueuePoint me="cluster1.000-Bus1" meUUID="C96051A1F0F91AB3" currentInboundMessages="0" inboundMessagesReceived="0" currentMessageRequests="0" completedMessageRequests="0" messageRequestsReceived="0"/> </QueuePoint> </QueuePoints> <RemoteQueuePoints> <RemoteQueuePoint name="_PSIMP.PROXY.QUEUE_122AAD73434FF5DA@Node1.server1-Bus1" remoteME="cluster1.001-Bus1" remoteMEUUID="122AAD73434FF5DA" currentOutboundMessages="0" outboundMessageSent="2" currentMessageRequests="0" completedMessageRequests="0" messageRequestsIssued="0"/> <RemoteQueuePoint name="_PSIMP.PROXY.QUEUE_C96051A1F0F91AB3@Node1.server1-Bus1" remoteME="cluster1.000-Bus1" remoteMEUUID="C96051A1F0F91AB3" currentOutboundMessages="0" outboundMessageSent="2" currentMessageRequests="0" completedMessageRequests="0" messageRequestsIssued="0"/> </RemoteQueuePoints> <MediationPoints> </MediationPoints> <RemoteMediationPoints> </RemoteMediationPoints> <PublicationPoints> <PublicationPoint name="Default.Topic.Space@Node1.server1-Bus1" depth="10" highMessageThreshold="50000" sendAllowed="1"> <RemotePublicationPoint me="cluster1.001-Bus1" meUUID="122AAD73434FF5DA" currentInboundMessages="0" inboundMessagesReceived="0"/> <RemotePublicationPoint me="cluster1.000-Bus1" meUUID="C96051A1F0F91AB3" currentInboundMessages="0" inboundMessagesReceived="0"/> <Subscription subscriberId="MySubName1" depth="10" topics=""/> <Subscription subscriberId="MySubName2" depth="5" topics=""/> </PublicationPoint> </PublicationPoints> <BusLinks> <BusLink name="Bus1Bus2Link" foreignBus="Bus2" state="STARTED"> <LinkReceiver state="STARTED" me="Node1.server1-Bus2" meUUID="B04215B7389FDA8F" receiverType="PUBLICATION" topicSpace="" currentInboundMessages="0" messagesReceived="3" timeSinceLastMessageReceived="19311ms" /> <LinkReceiver state="STARTED" me="Node1.server1-Bus2" meUUID="B04215B7389FDA8F" receiverType="PUBLICATION" topicSpace="" currentInboundMessages="0" messagesReceived="0" /> <LinkTransmitter state="STARTED" linkType="SIBVirtualGatewayLink" transmitterType="QUEUE" sendAllowed="1" currentOutboundMessages="0" messagesSent="4" timeSinceLastMessageSent="20435ms"/> </BusLink> </BusLinks> <WMQLinks> </WMQLinks> </MessagingEngine> <MessagingEngine name="cluster1.000-Bus1" uuid="C96051A1F0F91AB3" state="Started" activeServer="clusServer1"> <QueuePoints> <QueuePoint name="_PSIMP.TDRECEIVER_C96051A1F0F91AB3@cluster1.000-Bus1" state="ACTIVE" depth="0" highMessageThreshold="50000" sendAllowed="1"/> <QueuePoint name="_SYSTEM.Exception.Destination.cluster1.000-Bus1@cluster1.000-Bus1" state="ACTIVE" depth="0" highMessageThreshold="50000" sendAllowed="1"/> <QueuePoint name="_PTRM_C96051A1F0F91AB3@cluster1.000-Bus1" state="ACTIVE" depth="0" highMessageThreshold="50000" sendAllowed="1"/> <QueuePoint name="_PSIMP.PROXY.QUEUE_C96051A1F0F91AB3@cluster1.000-Bus1" state="ACTIVE" depth="0" highMessageThreshold="50000" sendAllowed="1"> <KnownRemoteQueuePoint me="cluster1.001-Bus1" meUUID="122AAD73434FF5DA" currentInboundMessages="0" inboundMessagesReceived="4" currentMessageRequests="0" completedMessageRequests="0" messageRequestsReceived="0"/> <KnownRemoteQueuePoint me="Node1.server1-Bus1" meUUID="92FF69453638CD2F" currentInboundMessages="0" inboundMessagesReceived="11" currentMessageRequests="0" completedMessageRequests="0" messageRequestsReceived="0"/> </QueuePoint> <QueuePoint name="Bus2WLMQueue1@cluster1.000-Bus1" state="ACTIVE" depth="0" highMessageThreshold="50000" sendAllowed="1"/> </QueuePoints> <RemoteQueuePoints> <RemoteQueuePoint name="Bus1Queue1@cluster1.000-Bus1" remoteME="Node1.server1-Bus1" remoteMEUUID="92FF69453638CD2F" currentOutboundMessages="0" outboundMessageSent="1" currentMessageRequests="0" completedMessageRequests="0" messageRequestsIssued="0"/> <RemoteQueuePoint name="_PSIMP.PROXY.QUEUE_122AAD73434FF5DA@cluster1.000-Bus1" remoteME="cluster1.001-Bus1" remoteMEUUID="122AAD73434FF5DA" currentOutboundMessages="0" outboundMessageSent="4" currentMessageRequests="0" completedMessageRequests="0" messageRequestsIssued="0"/> <RemoteQueuePoint name="_PSIMP.PROXY.QUEUE_92FF69453638CD2F@cluster1.000-Bus1" remoteME="Node1.server1-Bus1" remoteMEUUID="92FF69453638CD2F" currentOutboundMessages="0" outboundMessageSent="11" currentMessageRequests="0" completedMessageRequests="0" messageRequestsIssued="0"/> </RemoteQueuePoints> <MediationPoints> </MediationPoints> <RemoteMediationPoints> </RemoteMediationPoints> <PublicationPoints> <PublicationPoint name="Default.Topic.Space@cluster1.000-Bus1" depth="0" highMessageThreshold="50000" sendAllowed="1"> <Subscription subscriberId="MySubName3" depth="0" topics=""/> </PublicationPoint> </PublicationPoints> <BusLinks> <BusLink name="Bus1:Bus2" foreignBus="Bus2"> <LinkTransmitter state="STOPPED" linkType="SIBVirtualGatewayLink" transmitterType="QUEUE" sendAllowed="1" currentOutboundMessages="0" messagesSent="1" timeSinceLastMessageSent="3471037ms"/> </BusLink> </BusLinks> <WMQLinks> </WMQLinks> </MessagingEngine> <MessagingEngine name="cluster1.001-Bus1" uuid="122AAD73434FF5DA" state="Started" activeServer="clusServer2"> <QueuePoints> <QueuePoint name="_PSIMP.TDRECEIVER_122AAD73434FF5DA@cluster1.001-Bus1" state="ACTIVE" depth="0" highMessageThreshold="50000" sendAllowed="1"/> <QueuePoint name="_PSIMP.PROXY.QUEUE_122AAD73434FF5DA@cluster1.001-Bus1" state="ACTIVE" depth="0" highMessageThreshold="50000" sendAllowed="1"> <KnownRemoteQueuePoint me="Node1.server1-Bus1" meUUID="92FF69453638CD2F" currentInboundMessages="0" inboundMessagesReceived="12" currentMessageRequests="0" completedMessageRequests="0" messageRequestsReceived="0"/> <KnownRemoteQueuePoint me="cluster1.000-Bus1" meUUID="C96051A1F0F91AB3" currentInboundMessages="0" inboundMessagesReceived="2" currentMessageRequests="0" completedMessageRequests="0" messageRequestsReceived="0"/> </QueuePoint> <QueuePoint name="_SYSTEM.Exception.Destination.cluster1.001-Bus1@cluster1.001-Bus1" state="ACTIVE" depth="0" highMessageThreshold="50000" sendAllowed="1"/> <QueuePoint name="Bus2WLMQueue1@cluster1.001-Bus1" state="ACTIVE" depth="0" highMessageThreshold="50000" sendAllowed="1"/> <QueuePoint name="_PTRM_122AAD73434FF5DA@cluster1.001-Bus1" state="ACTIVE" depth="0" highMessageThreshold="50000" sendAllowed="1"/> </QueuePoints> <RemoteQueuePoints> <RemoteQueuePoint name="_PSIMP.PROXY.QUEUE_92FF69453638CD2F@cluster1.001-Bus1" remoteME="Node1.server1-Bus1" remoteMEUUID="92FF69453638CD2F" currentOutboundMessages="0" outboundMessageSent="12" currentMessageRequests="0" completedMessageRequests="0" messageRequestsIssued="0"/> <RemoteQueuePoint name="Bus1Queue1@cluster1.001-Bus1" remoteME="Node1.server1-Bus1" remoteMEUUID="92FF69453638CD2F" currentOutboundMessages="0" outboundMessageSent="1" currentMessageRequests="0" completedMessageRequests="0" messageRequestsIssued="0"/> <RemoteQueuePoint name="_PSIMP.PROXY.QUEUE_C96051A1F0F91AB3@cluster1.001-Bus1" remoteME="cluster1.000-Bus1" remoteMEUUID="C96051A1F0F91AB3" currentOutboundMessages="0" outboundMessageSent="2" currentMessageRequests="0" completedMessageRequests="0" messageRequestsIssued="0"/> </RemoteQueuePoints> <MediationPoints> </MediationPoints> <RemoteMediationPoints> </RemoteMediationPoints> <PublicationPoints> <PublicationPoint name="Default.Topic.Space@cluster1.001-Bus1" depth="0" highMessageThreshold="50000" sendAllowed="1"> <Subscription subscriberId="MySubName4" depth="0" topics=""/> </PublicationPoint> </PublicationPoints> <BusLinks> <BusLink name="Bus1:Bus2" foreignBus="Bus2"> <LinkTransmitter state="STOPPED" linkType="SIBVirtualGatewayLink" transmitterType="QUEUE" sendAllowed="1" currentOutboundMessages="0" messagesSent="1" timeSinceLastMessageSent="3471168ms"/> </BusLink> </BusLinks> <WMQLinks> </WMQLinks> </MessagingEngine> </Bus> </SIBusSummary>