Für die Konfiguration und Überwachung von Message Queue-Brokern wurde in Übereinstimmung mit der JMX-Spezifikation (Java Management Extensions) eine neue API hinzugefügt. Mithilfe dieser API haben Sie die Möglichkeit, Broker-Funktionen programmatisch in einer Message Queue-Clientanwendung zu konfigurieren und zu überwachen. In früheren Versionen von Message Queue war der Zugriff auf diese Funktionen ausschließlich über die Befehlszeile oder die Administrationskonsole möglich.
Die API besteht aus mehreren JMX-MBeans (Managed Beans) zur Verwaltung der folgenden mit Message Queue verbundenen Ressourcen:
Nachrichten-Broker
Verbindungsdienste
Verbindungen
Ziele
Nachrichtenproduzenten
Nachrichtenkonsumenten
Transaktionen
Broker-Cluster
Protokollierung
Die JVM (Java Virtual Machine)
Diese MBeans stellen Attribute und Operationen für das synchrone Abrufen und Manipulieren des Status der zugrunde liegenden Ressourcen bereit, sowie Benachrichtigungen, über die eine Clientanwendung Statusänderungen überwachen und asynchron darauf antworten kann, sobald diese auftreten. Mithilfe der JMX-API können Clientanwendungen Konfigurations- und Überwachungsaufgaben wie die folgenden durchführen:
Festlegen von Portnummern für Broker
Festlegen der maximalen Nachrichtengröße für Broker
Anhalten eines Verbindungsdienstes
Festlegen der maximalen Anzahl an Threads für einen Verbindungsdienst
Abrufen der aktuellen Anzahl der Verbindungen mit einem Dienst
Löschen einer Verbindung
Erstellen eines Zieles
Löschen eines Zieles
Aktivieren oder deaktivieren der automatischen Erstellung von Zielen
Bereinigen aller Nachrichten in einem Ziel
Abrufen der Gesamtzahl an Nachrichten, die von einem Ziel seit dem Broker-Start empfangen wurden
Abrufen des aktuellen Status (ausgeführt oder angehalten) einer Warteschlange
Abrufen der aktuellen Anzahl an Nachrichtenproduzenten für ein Thema
Bereinigen aller Nachrichten eines dauerhaften Abonnenten
Abrufen der aktuellen JVM-Heap-Größe
Eine Einführung in die JMX-API und vollständige Referenzinformationen finden Sie im Sun Java System Message Queue 4.1 Developer’s Guide for JMX Clients .
Zur Unterstützung der JMX-API wurden mehrere neue Broker-Eigenschaften hinzugefügt(siehe Tabelle 1–3). Keine dieser Eigenschaften kann über die Befehlszeile mit dem Message Queue-Dienstprogramm Command (imqcmd) festgelegt werden. Stattdessen besteht die Möglichkeit, diese über die -D-Option des Broker-Dienstprogramms (imqbrokerd) festzulegen oder sie manuell in der Instanzkonfigurationsdatei des Brokers ( config.properties) zu bearbeiten. Zudem lassen sich einige dieser Eigenschaften (imq.jmx.rmiregistry.start, imq.jmx.rmiregistry.use, imq.jmx.rmiregistry.port) mit den neuen Broker-Dienstprogrammoptionen festlegen, die in Tabelle 1–4 beschrieben werden. In der Tabelle sind sämtliche Optionen mit Angaben zu Typ und Verwendung enthalten.
Tabelle 1–3 Neue Broker-Eigenschaften für JMX-Unterstützung
Die Eigenschaft imq.jmx.connector.list definiert eine Reihe benannter JMX-Connectors, die beim Broker-Start erstellt werden; imq.jmx.connector.activelist legt fest, welcher dieser Connectors aktiviert werden soll. Jeder benannte Connector verfügt somit über eigene Eigenschaften:
imq.jmx.connector.Connector-Name .urlpath |
imq.jmx.connector.Connector-Name .useSSL |
imq.jmx.connector.Connector-Name .brokerHostTrusted |
Standardmäßig werden zwei JMX-Connectors namens jmxrmi und ssljmxrmi erstellt. Entsprechend der Konfiguration verwendet der erste keine SSL-Verschlüsselung (imq.jmx.connector.jmxrmi.useSSL = false und der zweite verwendet diese (imq.jmx.connector.ssljmxrmi.useSSL = true). Per Voreinstellung ist nur der jmxrmi-Connector beim Broker-Start aktiviert. Weitere Informationen zum Aktivieren des ssljmxrmi-Connector für eine sichere Kommunikation finden Sie unter SSL-Unterstützung für JMX-Clients.
Zudem wurden neue Optionen (Tabelle 1–4) zum Befehlszeilendienstprogramm Broker hinzugefügt (imqbrokerd), um die Nutzung, den Startvorgang und den Port für die RMI-Registrierung zu steuern. Die Verwendungs- und Wirkungsweise dieser Optionen entspricht der der äquivalenten Broker-Eigenschaften, die in Tabelle 1–3 beschrieben sind. In der Tabelle sind alle Optionen mit der jeweiligen äquivalenten Broker-Eigenschaft und Beschreibung aufgeführt.
Tabelle 1–4 Neue Broker-Dienstprogrammoptionen für JMX-Unterstützung
Option |
Äquivalente Broker-Eigenschaft |
Beschreibung |
---|---|---|
-startRmiRegistry |
imq.jmx.rmiregistry.start |
Gibt an, ob die RMI-Registrierung beim Broker-Start gestartet wird. |
-useRmiRegistry |
imq.jmx.rmiregistry.use |
Gibt an, ob eine externe RMI-Registrierung verwendet wird. |
-rmiRegistryPort |
imq.jmx.rmiregistry.port |
Die Portnummer der RMI-Registrierung |
Ein neuer Unterbefehl (Tabelle 1–5) wurde zum Befehlszeilendienstprogramm Command (imqcmd) für die Auflistung der JMX-Dienst-URLs von JMX-Connectors hinzugefügt, die beim Broker-Start erstellt und gestartet wurden. Diese Information wird von JMX-Clients benötigt, die nicht die Message Queue-Convenience-Klasse AdminConnectionFactory verwenden, um die JMX-Connectors abzurufen. Darüber hinaus kann sie zum Verwalten und Überwachen von Message Queue über einen generischen JMX-Browser, wie Java Monitoring und Management Console ( jconsole), verwendet werden.
Tabelle 1–5 Neuer Unterbefehl für das Dienstprogramm Command
Unterbefehl |
Beschreibung |
---|---|
list jmx |
Listet JMX-Dienst-URLs von JMX-Connectors auf |
Wie oben bereits erwähnt, ist der Message Queue-Nachrichten-Broker standardmäßig für eine sichere Kommunikation über den vordefinierten JMX-Connector jmxrmi konfiguriert. Für Anwendungen muss zur Verwendung von SSL (Secure Socket Layer) für eine sichere Kommunikation der alternative, sichere JMX-Connector ssljmxrmi aktiviert werden. Dies erfordert die folgenden Schritte:
Rufen Sie ein signiertes Zertifikat ab, und installieren Sie dieses so, wie es für die Verbindungsdienste ssljms, ssladmin oder cluster im Message Queue Administration Guide beschrieben wird.
Installieren Sie das Root-Zertifizierungsstellenzertifikat im Vertrauensspeicher, falls erforderlich.
Fügen Sie den ssljmxrmi-Connector zur Liste der JMX-Connectors hinzu, damit dieser beim Broker-Start aktiviert wird:
imq.jmx.connector.activelist=jmxrmi,ssljmxrmi
Starten Sie den Broker mit dem Message Queue-Dienstprogramm Broker (imqbrokerd), indem Sie diesem entweder das Schlüsselspeicher-Passwort in einer Passwortdatei übergeben oder es bei Aufforderung in die Befehlszeile eingeben.
Standardmäßig ist der ssljmxrmi-Connector (oder jeder andere SSL-basierte Connector) konfiguriert, um sämtliche bereitgestellten Broker-SSL-Zertifikate zu validieren. Um diese Validierung zu verhindern (wenn Sie z. B. selbst signierte Zertifikate beim Testen von Software verwenden), setzen Sie die Broker-Eigenschaft imq.jmx.connector.ssljmxrmi.brokerHostTrusted auf true.
Auf Clientseite muss das Administrator-Verbindungsfactory (AdminConnectionFactory) mit einer URL konfiguriert sein, die ssljmxrmi als bevorzugten Connector angibt:
AdminConnectionFactory acf = new AdminConnectionFactory(); acf.setProperty(AdminConnectionConfiguration.imqAddress, "mq://myhost:7676/ssljmxrmi");
Verwenden Sie erforderlichenfalls die Systemeigenschaften javax.net.ssl.trustStore und javax.net.ssl.trustStorePassword, um den JMX-Client mit dem Vertrauensspeicher zu verknüpfen.