Zusammenfassung der Laufzeitstatus aller aktiven Messaging-Engines in einer Zelle ausgeben
Sie können Scripting verwenden, um die Details aller Messaging-Engines in allen Bussen aufzulisten.
Informationen zu diesem Vorgang
Vorgehensweise
Beispiel
Im Folgenden sehen Sie ein Beispielscript mit einer Beispielausgabe.
# Beispielprogramm
# * (C) COPYRIGHT International Business Machines Corp., 2008, 2009
# * Alle Rechte vorbehalten * Lizenziertes Material - Eigentum von IBM
# *
# * Dieses Beispielprogramm wird ohne Wartung (auf "as-is"-Basis)
# * bereitgestellt und kann vom Kunden
# *
# * (a) zu Schulungs- und Studienzwecken,
# * (b) zum Entwickeln von Anwendungen für ein IBM WebSphere-Produkt zur
# * internen Nutzung beim Kunden gebührenfrei genutzt, ausgeführt,
# * kopiert und geändert werden.
#
# Version: 1.02
#
# Information:
# Dieses Script gibt eine XML-Zusammenfassung der verfügbaren Laufzeitinformationen
# für alle Warteschlangenpunkte, Veröffentlichungspunkte, Mediation-Punkte, SIB-Links
# und WMQ-Links aus.
# Das Script sollte für den Deployment Manager der Zelle ausgeführt werden, so dass
# die Ausgabe über alle aktiven Messaging-Engines in allen Bussen verfügbar ist.
# Das Script erfasst dieselben Informationen, die auch in der Administrationskonsole
# angezeigt werden können.
# Die folgende Ausgabe ist nur verfügbar, wenn das Script für eine Umgebung
# der WebSphere Application Server Version 7 ausgeführt wird:
# - Informationen zu SIB-Links
# - Informationen zu WebSphere-MQ-Links
#
# Verwendung:
# 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>
# Klasse für die vollständige Ausgabe eines Fehlers (mit Stack) in STDERR sowie einer Kurzzusammenfassung
# in der XML-Ausgabe. Jedem Fehler ist für den Abgleich eine ganze Zahl zugeordnet.
class ErrorTracker:
errorCount = 0
# Unterstützungsmethode für die Ausgabe von Ausnahmedetails in Form eines Fehlerattributs in einem Tag
def printErrorAndCloseTag(self, exception_tuple, oneLine):
self.errorCount += 1
# Fehler in STDERR ausgeben
sys.stderr.write("ERROR [" + str(self.errorCount) + "]:\n")
sys.excepthook(exception_tuple[0],exception_tuple[1],exception_tuple[2])
# Zusammenfassung des Fehlers in der Ausgabedatei ausgeben
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')
# Einzelne globale Instanz des Fehler-Trackers
et = ErrorTracker()
# Unterstützungsmethode für den Abruf eines JMX-Attributs im Zeichenfolgeformat
def getStrAttr(mBean, attr):
val = AdminControl.getAttribute_jmx(mBean, attr)
if val == None: val = ''
else: val = str(val)
return val
# Unterstützungsmethode für den Abruf des Rückgabewerts einer JMX-Methode im Zeichenfolgeformat
def getStrReturnVal(mBean, method):
val = AdminControl.invoke_jmx(mBean, method, [], [])
if val == None: val = ''
else: val = str(val)
return val
# toString-Unterstützungsmethode für die Verarbeitung von None-Werten als leere Zeichenfolgen
def toStr(val):
if val == None: val = ''
else: val = str(val)
return val
# Messaging-Enginesklasse schließt eine Messaging-Engine ein, ordnet
# ihren Namen einer UUID zu und enthält alle Methoden, die zur Ausgabe des Laufzeitstatus
# dieser Messaging-Engines verwendet werden.
class MessagingEngine:
"Eine Klasse für die Ausgabe einer Laufzeitzusammenfassung einer Messaging-Engine"
# Konstruktor
def __init__(self, bus, name, uuid):
self.bus = bus
self.name = name
self.uuid = uuid
# Methode für die Ausgabe einer Zusammenfassung des Laufzeitstatus dieser Messaging-Engine
# - Dies ist der Einstiegspunkt in die Klasse (andere Methoden sind logisch private Methoden)
def printRuntimeStateXML(self, indent):
# Anfang des Tags ausgeben (und Platz für weitere Eigenschaften lassen)
out.write(indent + '<MessagingEngine name="' + self.name + '" uuid="' + self.uuid + '"')
meMBean = None
try:
# Erste Suche nach der MBean
meLookupName = AdminControl.makeObjectName('WebSphere:type=SIBMessagingEngine,name=' + self.name + ',*')
meMBeans = AdminControl.queryNames_jmx(meLookupName, None)
if (meMBeans == None) or (meMBeans.size() == 0):
# Nur eine leere Messaging-Engine
out.write(' state="Unknown (no MBean found)">\n')
elif meMBeans.size() == 1:
# Referenz auf die MBean speichern
meMBean = meMBeans[0]
# Einstiegs-Tag vervollständigen
out.write(' state="' + AdminControl.invoke_jmx(meMBean, "state", [], []) + '"')
out.write(' activeServer="' + meMBean.getKeyProperty("process") + '"')
out.write('>\n')
else:
# Es wird keine/eine einzige MBean erwartet
raise Exception, "Found " + str(len(meMBeans)) + " MBeans for messaging engine. Expected 1"
except:
et.printErrorAndCloseTag(sys.exc_info(), 0)
# Durch den Inhalt iterieren
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 + " ")
# Tag vervollständigen
out.write(indent + "</MessagingEngine>\n")
# Zusammenfassung aller Warteschlangenpunkte für die Messaging-Engine ausgeben
# und hierfür die vom aufrufenden Modul gefundene MBean für die Messaging-Engine verwenden
def printQueuePointsXML(self, meMBean, indent):
qpMBeans = None
out.write(indent + "<QueuePoints")
try:
# Eine Liste mit MBeans für Veröffentlichungspunkte abrufen
qpLookupName = AdminControl.makeObjectName('WebSphere:type=SIBQueuePoint,SIBMessagingEngine=' + self.name + ',*')
qpMBeans = AdminControl.queryNames_jmx(qpLookupName, None)
out.write('>\n') # Tag vervollständigen, da Lookup erfolgreich war
except:
et.printErrorAndCloseTag(sys.exc_info(), 0)
# Jede einzelne abarbeiten
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") + '"')
# Nur versuchen, weitere Details für aktive Warteschlangenpunkte abzurufen
if qpState == 'ACTIVE':
# Eine Liste eingehender Empfänger für ferne Warteschlangenpunkte abrufen
inboundReceivers = AdminControl.invoke_jmx(qpMBean, "listInboundReceivers", [], [])
# Eine Liste ferner Konsumentensender für ferne Warteschlangenpunkte abrufen
consumerTransmitters = AdminControl.invoke_jmx(qpMBean, "listRemoteConsumerTransmitters", [], [])
# Ferne Warteschlangenpunkte für alle eingehenden Empfänger hinzufügen
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
# Ferne Warteschlangenpunkte für alle Konsumentensender hinzufügen
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
# Wenn keine RQPs vorhanden sind, kann das Tag in dieser Zeile beendet werden
if len(rqps.keys()) == 0:
out.write('/>\n')
oneLineTag = 1
else:
out.write('>\n') # Vollständies Tag erforderlich
except:
et.printErrorAndCloseTag(sys.exc_info(), 0)
# Alle gefundenen RQPs verarbeiten
for rqpUuid in rqps.keys():
rqp = rqps[rqpUuid]
rqp.printSummaryXML(indent + " ")
# QueuePoint-Tag vervollständigen
if oneLineTag == 0: out.write(indent + " </QueuePoint>\n")
# QueuePoints-Tag vervollständigen
out.write(indent + "</QueuePoints>\n")
# Zusammenfassung aller fernen Warteschlangenpunkte für die Messaging-Engine ausgeben
# und hierfür die vom aufrufenden Modul gefundene MBean für die Messaging-Engine verwenden
def printRemoteQueuePointsXML(self, meMBean, indent):
rqpMBeans = None
out.write(indent + "<RemoteQueuePoints")
try:
# Eine Liste der MBeans für ferne Warteschlangenpunkte abrufen
rqpLookupName = AdminControl.makeObjectName('WebSphere:type=SIBRemoteQueuePoint,SIBMessagingEngine=' + self.name + ',*')
rqpMBeans = AdminControl.queryNames_jmx(rqpLookupName, None)
out.write('>\n') # Tag vervollständigen, da Lookup erfolgreich war
except:
et.printErrorAndCloseTag(sys.exc_info(), 0)
# Jede einzelne abarbeiten
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 + '"')
# Details zu abgehenden Sender (sofern vorhanden) abrufen
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) + '"')
# Fernen Konsumentenempfänger (sofern vorhanden) abrufen
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) + '"')
# Stets eine einzige Zeile für ferne Warteschlangenpunkte
out.write('/>\n')
except:
et.printErrorAndCloseTag(sys.exc_info(), 1)
# QueuePoints-Tag vervollständigen
out.write(indent + "</RemoteQueuePoints>\n")
# Zusammenfassung aller fernen Veröffentlichungspunkte für die Messaging-Engine ausgeben
# und hierfür die vom aufrufenden Modul gefundene MBean für die Messaging-Engine verwenden
def printRemotePublicationPointsXML(self, meMBean, indent):
rppMBeans = None
out.write(indent + "<RemotePublicationPoints")
try:
# Eine Liste der MBeans für ferne Warteschlangenpunkte abrufen
rppLookupName = AdminControl.makeObjectName('WebSphere:type=SIBRemotePublicationPoint,SIBMessagingEngine=' + self.name + ',*')
rppMBeans = AdminControl.queryNames_jmx(rppLookupName, None)
out.write('>\n') # Tag vervollständigen, da Lookup erfolgreich war
except:
et.printErrorAndCloseTag(sys.exc_info(), 0)
# Jede einzelne abarbeiten
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 + '"')
# Details zu abgehenden Sender (sofern vorhanden) abrufen
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) + '"')
# Stets eine einzige Zeile für ferne Warteschlangenpunkte
out.write('/>\n')
except:
et.printErrorAndCloseTag(sys.exc_info(), 1)
# RemotePublicationPoints-Tag vervollständigen
out.write(indent + "</RemotePublicationPoints>\n")
# Zusammenfassung aller fernen Subskriptionspunkte für die Messaging-Engine ausgeben
# und hierfür die vom aufrufenden Modul gefundene MBean für die Messaging-Engine verwenden
def printRemoteSubscriptionPointsXML(self, meMBean, indent):
rspMBeans = None
out.write(indent + "<RemoteSubscriptionPoints")
try:
# Eine Liste der MBeans für ferne Warteschlangenpunkte abrufen
rspLookupName = AdminControl.makeObjectName('WebSphere:type=SIBRemoteSubscriptionPoint,SIBMessagingEngine=' + self.name + ',*')
rspMBeans = AdminControl.queryNames_jmx(rspLookupName, None)
out.write('>\n') # Tag vervollständigen, da Lookup erfolgreich war
except:
et.printErrorAndCloseTag(sys.exc_info(), 0)
# Jede einzelne abarbeiten
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 + '"')
# Fernen Konsumentenempfänger (sofern vorhanden) abrufen
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) + '"')
# Stets eine einzige Zeile für ferne Warteschlangenpunkte
out.write('/>\n')
except:
et.printErrorAndCloseTag(sys.exc_info(), 1)
# RemotePublicationPoints-Tag vervollständigen
out.write(indent + "</RemoteSubscriptionPoints>\n")
# Zusammenfassung aller Mediation-Punkte für die Messaging-Engine ausgeben
# und hierfür die vom aufrufenden Modul gefundene MBean für die Messaging-Engine verwenden
def printMediationPointsXML(self, meMBean, indent):
mpMBeans = None
out.write(indent + "<MediationPoints")
try:
# Eine Liste mit MBeans für Mediation-Punkte abrufen
mpLookupName = AdminControl.makeObjectName('WebSphere:type=SIBMediationPoint,SIBMessagingEngine=' + self.name + ',*')
mpMBeans = AdminControl.queryNames_jmx(mpLookupName, None)
out.write('>\n') # Tag vervollständigen, da Lookup erfolgreich war
except:
et.printErrorAndCloseTag(sys.exc_info(), 0)
# Jede einzelne abarbeiten
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)
# QueuePoints-Tag vervollständigen
out.write(indent + "</MediationPoints>\n")
# Zusammenfassung aller fernen Mediation-Punkte für die Messaging-Engine ausgeben
# und hierfür die vom aufrufenden Modul gefundene MBean für die Messaging-Engine verwenden
def printRemoteMediationPointsXML(self, meMBean, indent):
rmpMBeans = None
out.write(indent + "<RemoteMediationPoints")
try:
# Eine Liste der MBeans für ferne Mediation-Punkte abrufen
rmpLookupName = AdminControl.makeObjectName('WebSphere:type=SIBRemoteMediationPoint,SIBMessagingEngine=' + self.name + ',*')
rmpMBeans = AdminControl.queryNames_jmx(rmpLookupName, None)
out.write('>\n') # Tag vervollständigen, da Lookup erfolgreich war
except:
et.printErrorAndCloseTag(sys.exc_info(), 0)
# Jede einzelne abarbeiten
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 + '"')
# Details zu abgehenden Sender (sofern vorhanden) abrufen
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) + '"')
# Stets eine einzige Zeile für ferne Mediation-Punkte
out.write('/>\n')
except:
et.printErrorAndCloseTag(sys.exc_info(), 1)
# MediationPoints-Tag vervollständigen
out.write(indent + "</RemoteMediationPoints>\n")
# Zusammenfassung aller Veröffentlichungspunkte für die Messaging-Engine ausgeben
# und hierfür die vom aufrufenden Modul gefundene MBean für die Messaging-Engine verwenden
def printPublicationPointsXML(self, meMBean, indent):
ppMBeans = None
out.write(indent + "<PublicationPoints")
try:
# Eine Liste mit MBeans für Veröffentlichungspunkte abrufen
ppLookupName = AdminControl.makeObjectName('WebSphere:type=SIBPublicationPoint,SIBMessagingEngine=' + self.name + ',*')
ppMBeans = AdminControl.queryNames_jmx(ppLookupName, None)
out.write('>\n') # Tag vervollständigen, da Lookup erfolgreich war
except:
et.printErrorAndCloseTag(sys.exc_info(), 0)
# Jede einzelne abarbeiten
for ppMBean in ppMBeans:
inboundReceivers = []
subscriptions = []
out.write(indent + " <PublicationPoint")
depth = None
try:
depth = getStrAttr(ppMBean, "depth")
except:
# Attribut ist nicht vorhanden
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") + '"')
# Eine Liste eingehender Empfänger für ferne Veröffentlichungspunkte abrufen
inboundReceivers = AdminControl.invoke_jmx(ppMBean, "listInboundReceivers", [], [])
# Eine Liste der Subskriptionen abrufen
subscriptions = AdminControl.invoke_jmx(ppMBean, "getSubscriptions", [], [])
# Tag vervollständigen
out.write('>\n')
except:
et.printErrorAndCloseTag(sys.exc_info(), 0)
# Jeden einzelnen fernen Veröffentlichungspunkt (eingehender Empfänger) abarbeiten
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)
# Jede einzelne Subskription abarbeiten
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) + '"')
# Jeden Selektor schreiben
selector = sub.getSelector()
if selector != None: out.write(' selector="' + sub.getSelector() + '"')
# Topics schreiben
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('"')
# Eine Liste der fernen Subskriptionspunkte abrufen
rsps = AdminControl.invoke_jmx(ppMBean, "listRemoteConsumerTransmitters", [sub], ['com.ibm.websphere.sib.admin.SIBSubscription'])
# Prüfen, ob untergeordnete Elemente vorhanden sind, oder einfach das Tag hier schließen
if len(rsps) == 0:
out.write('/>\n')
oneLineTag = 1
else: out.write('>\n')
except:
et.printErrorAndCloseTag(sys.exc_info(), 0)
# Sind ferne Subskriptionspunkte vorhanden?
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)
# Subskriptions-Tag bei Bedarf schließen
if oneLineTag == 0: out.write(indent + ' </Subscription>\n')
# PublicationPoint-Tag vervollständigen
# 50 Nachrichten als Puffer bereitstellen, um das Risiko falscher Alarme zu minimieren.
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")
# PublicationPoints-Tag vervollständigen
out.write(indent + "</PublicationPoints>\n")
# Zusammenfassung aller SIB-Links in dieser Messaging-Engine ausgeben
# und hierfür die vom aufrufenden Modul gefundene MBean für die Messaging-Engine verwenden
def printBusLinks(self, meMBean, indent):
glMBeans = None
out.write(indent + "<BusLinks")
try:
# Eine Liste der MBeans für Linkübertragungswarteschlangen abrufen.
# Diese Liste ist für Messaging-Engines vor Version 7.0 leer.
glLookupName = AdminControl.makeObjectName('WebSphere:type=SIBGatewayLink,SIBMessagingEngine=' + self.name + ',*')
glMBeans = AdminControl.queryNames_jmx(glLookupName, None)
out.write('>\n') # Tag vervollständigen, da Lookup erfolgreich war
except:
et.printErrorAndCloseTag(sys.exc_info(), 0)
# UUIDs aller Verbindungsziele, die als lokale Verbindungen erkannt wurden,
# verfolgen, um sie aus der Liste der fernen Sender auszuschließen.
localLinkUuids = {}
# Jeden einzelnen Sender abarbeiten
for glMBean in glMBeans:
oneLineTag = 0
linkReceivers = []
targetUuid = glMBean.getKeyProperty("targetUuid")
localLinkUuids[targetUuid] = 1
out.write(indent + " <BusLink")
# Zuerst prüfen, ob der Name des fremden Busses abgefragt werden kann. Wenn dieser Versuch scheitert,
# kommunizieren Sie mit einer Messaging-Engine vor Version 7.
foreignBusName = None
oldVersion = 0
try:
foreignBusName = getStrReturnVal(glMBean, "getForeignBusName")
except:
oldVersion = 1
# Den Namen abrufen (manchmal enthält der zurückgegebene Name Anführungszeichen).
virtualLinkName = toStr(glMBean.getKeyProperty("name"))
if not (virtualLinkName.find('"') == 0): virtualLinkName = '"' + virtualLinkName + '"'
# Die richtigen Informationen für jede Version ausgeben
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)
# Die Verbindungsempfangswarteschlangen für diese Verbindung ausgeben
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)
# Die Linkübertragungswarteschlangen für diese Verbindung ausgeben
self.printLinkTransmittersXML(meMBean, targetUuid, {}, indent + ' ')
# Verbindungs-Tag vervollständigen
out.write(indent + ' </BusLink>\n')
# Nur für den Fall, dass es verwaiste Verbindungs-MBeans gibt, diese hier ausgeben
self.printLinkTransmittersXML(meMBean, None, localLinkUuids, indent + ' ')
# SIBLinks-Tag vervollständigen
out.write(indent + "</BusLinks>\n")
# Zusammenfassung aller SIB-Linkübertragungswarteschlangen für die Messaging-Engine
# ausgeben und hierfür die vom aufrufenden Modul gefundene MBean für die Messaging-Engine verwenden.
# Gibt entweder alle Sender mit einer bestimmten Ziel-UUID oder alle Sender
# mit Ausnahme von Schlüsseln im excludeUuids-Hash aus.
def printLinkTransmittersXML(self, meMBean, targetUuid, excludeUuids, indent):
ltMBeans = None
try:
# Eine Liste der MBeans für Linkübertragungswarteschlangen abrufen.
# Diese Liste ist für Messaging-Engines vor Version 7.0 leer.
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)
# Jeden einzelnen Sender abarbeiten
for ltMBean in ltMBeans:
# Sicherstellen, dass dies nicht ausgeschlossen werden sollte
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"')
# Stets eine einzige Zeile für Linkübertragungswarteschlangen
out.write('/>\n')
except:
et.printErrorAndCloseTag(sys.exc_info(), 1)
# Zusammenfassung aller WMQ-Links in dieser Messaging-Engine ausgeben
# und hierfür die vom aufrufenden Modul gefundene MBean für die Messaging-Engine verwenden
def printWMQLinks(self, meMBean, indent):
mqlMBeans = None
out.write(indent + "<WMQLinks")
try:
# Eine Liste der MBeans für WMQ-Links abrufen.
# Diese Liste ist für Messaging-Engines vor Version 7.0 leer.
mqlLookupName = AdminControl.makeObjectName('WebSphere:type=SIBMQLink,SIBMessagingEngine=' + self.name + ',*')
mqlMBeans = AdminControl.queryNames_jmx(mqlLookupName, None)
out.write('>\n') # Tag vervollständigen, da Lookup erfolgreich war
except:
et.printErrorAndCloseTag(sys.exc_info(), 0)
# Jede einzelne gefundene MBean für WMQ-Links abarbeiten
for mqlMBean in mqlMBeans:
schlMBeans = []
rchlMBeans = []
# Möglicherweise können keine Nachrichten abgefragt werden, die gemäß Einführung in Version 7.0 empfangen wurden
msgsReceived = None
try:
msgsReceived = getStrReturnVal(mqlMBean, "getTotalLinkMessagesReceived")
except:
pass
out.write(indent + " <WMQLink")
try:
# targetUuid abrufen
linkName = mqlMBean.getKeyProperty("name")
out.write(' name="' + linkName + '"')
out.write(' state="' + getStrReturnVal(mqlMBean, "getOverallStatus") + '"')
if msgsReceived != None: out.write(' messagesReceived="' + msgsReceived + '"')
# Liste der Senderkanalinstanzen des WMQ-Links abrufen
schlLookupName = AdminControl.makeObjectName('WebSphere:type=SIBMQLinkSenderChannel,SIBMessagingEngine=' + self.name + ',name=' + linkName + 'SNDR,*')
schlMBeans = AdminControl.queryNames_jmx(schlLookupName, None)
# Liste der Empfängerkanalinstanzen des WMQ-Links abrufen
rchlLookupName = AdminControl.makeObjectName('WebSphere:type=SIBMQLinkReceiverChannel,SIBMessagingEngine=' + self.name + ',name=' + linkName + 'RCVR,*')
rchlMBeans = AdminControl.queryNames_jmx(rchlLookupName, None)
out.write('>\n') # Anfangstag vervollständigen
except:
et.printErrorAndCloseTag(sys.exc_info(), 0)
# Die Senderkanäle durchlaufen
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()) + '"')
# Liste der Übertragungswarteschlangeninstanzen des Senderkanals des WMQ-Links abrufen
sxmitLookupName = AdminControl.makeObjectName('WebSphere:type=SIBMQLinkSenderChannelTransmitter,SIBMessagingEngine=' + self.name + ',name=' + channelName + ',*')
sxmitMBeans = AdminControl.queryNames_jmx(sxmitLookupName, None)
out.write('>\n') # Anfangstag vervollständigen
except:
et.printErrorAndCloseTag(sys.exc_info(), 0)
# Durch die Übertragungswarteschlangen des Senderkanals iterieren
for sxmitMBean in sxmitMBeans:
out.write(indent + " <SenderChannelTransmitter")
# Liste der bekannten Linkübertragungswarteschlangen
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"')
# Liste der bekannten Linkübertragungswarteschlangen
knownLinkTransmitters = AdminControl.invoke_jmx(sxmitMBean, "listInboundReceivers", [], [])
# Tag vervollständigen
if (knownLinkTransmitters == None) or (len(knownLinkTransmitters)) == 0:
out.write('/>\n') # Einzeiliges Tag vervollständigen
oneLineTag = 1
else: out.write('>\n')
except:
et.printErrorAndCloseTag(sys.exc_info(), 1)
# Bekannte Linkübertragungswarteschlangen ausgeben
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)
# Tag für Übertragungswarteschlange schließen
out.write(indent + " </SenderChannelTransmitter>\n")
# Sender-Tag schließen
out.write(indent + " </SenderChannel>\n")
# Die Empfängerkanäle durchlaufen
for rchlMBean in rchlMBeans:
out.write(indent + " <ReceiverChannel")
statusEntries = []
try:
out.write(' state="' + getStrReturnVal(rchlMBean,"getOverallStatus") + '"')
# Den Status jeder Instanz auflisten
statusEntries = AdminControl.invoke_jmx(rchlMBean, "getCurrentStatus", [], [])
if (statusEntries == None): statusEntries = []
out.write('>\n') # Anfangstag vervollständigen
except:
et.printErrorAndCloseTag(sys.exc_info(), 0)
# Jeden Eintrag ausgeben
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') # Tag vervollständigen
except:
et.printErrorAndCloseTag(sys.exc_info(), 1)
# Tag schließen
out.write(indent + " </ReceiverChannel>\n")
# WMQLink-Tag vervollständigen
out.write(indent + " </WMQLink>\n")
# WMQLinks-Tag vervollständigen
out.write(indent + "</WMQLinks>\n")
# Eine kleine Klasse, die bei der Zusammenfassung von Informationen
# zu Konsumentenübertragungswarteschlangen und Empfangswarteschlangen
# für eingehende Nachrichten an einem Warteschlangenpunkt hilft.
# Erstellen Sie deshalb einen "bekannten fernen Warteschlangenpunkt"
# für jede ferne Messaging-Engines-UUID, für die Sie
# einen fernen put/get-Status haben.
class KnownRemoteQueuePoint:
"Eine Klasse für die Ausgabe einer Laufzeitzusammenfassung eines bekannten fernen Warteschlangenpunkts"
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
# XML-Tag für Zusammenfassung dieses KnownRemoteQueuePoint ausgeben
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) + '"')
# Hierfür wird nur eine einzige Zeile benötigt
out.write('/>\n')
except:
et.printErrorAndCloseTag(sys.exc_info(), 1)
# Scriptausführung beginnt hier...
# Der einzige Eingabeparameter ist der Name der Ausgabedatei.
# Standardmäßig wird STDOUT verwendet, wenn kein Name angegeben ist.
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
# Alle Messaging-Engines in der Konfiguration suchen und eine UUID
# für die Messaging-Engines im Namensverzeichnis erstellen
mesByUUID = {}
mesByBus = {}
mes = AdminConfig.list("SIBMessagingEngine").split("\n")
for me in mes:
# Umbrüche unter Windows entfernen
me = me.strip()
# Ein ME-Objekt erstellen
meBus = AdminConfig.showAttribute(me, "busName")
meName = AdminConfig.showAttribute(me, "name")
meUUID = AdminConfig.showAttribute(me, "uuid")
meObject = MessagingEngine(meBus, meName, meUUID)
# Messaging-Engines nach UUID in die Zuordnung aufnehmen
mesByUUID[meUUID] = meObject
# Messaging-Engines in die Liste für diesen Bus aufnehmen
if (mesByBus.has_key(meBus)): meList = mesByBus[meBus]
else: meList = []
meList.append(meObject)
mesByBus[meBus] = meList
# Die Busse und Messaging-Engines in jedem Bus durchlaufen
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()
Im Folgenden sehen Sie die Beispielausgabe für das 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>