![[UNIX, Linux, Windows, IBM i]](ngmulti.gif)
Anwendungsinstanzen in ' IBM MQ classes for JMS/Jakarta Messaging
Standardmäßig behandeln die Anbieter IBM® MQ classes for JMS und IBM MQ classes for Jakarta Messaging alle IBM MQ -Clientverbindungen, die für dasselbe JMSConnection - oder JMSContext -Objekt erstellt werden, als eine einzige Anwendungsinstanz.
Für jedes " JMSSession, das einem " JMSConnection zugeordnet ist, wird eine eigene " IBM MQ Verbindung erstellt, aber diese Verbindungen nutzen denselben Socket (sofern die SHARECNV-Einstellungen dies zulassen) und erhalten denselben CONNTAG-Wert. Wenn einheitliche Cluster verwendet werden, werden diese Verbindungen als eine Einheit verschoben, wenn die Anwendungsinstanz auf einen neuen Warteschlangenmanager umgestellt wird.
Diskrete " JMS werden als unverbunden betrachtet; jedes " JMSConnection oder " JMSContext stellt eine diskrete Anwendungsinstanz dar. Dieses Verhalten ist in einigen Situationen wünschenswert, z. B. in einer Anwendungsserverumgebung, in der viele verschiedene Anwendungs-Threads innerhalb eines einzigen großen Prozesses der virtuellen Maschine " Java ausgeführt werden.
![[ MQ 9.4.2 Feb 2025]](ng942.gif)
JVM-Modus
Von IBM MQ 9.4.2 aus können Sie einen Betriebsmodus angeben, in dem alle IBM MQ -Verbindungen aus dem gesamten Java -Prozess (der virtuellen Maschine Java ) als eine einzige Anwendungsinstanz behandelt werden, unabhängig von der JMS -Verbindungsaffinität. Dieses Verhalten könnte für einige Arten von Mikroservice-Anwendungen wünschenswerter sein, bei denen eine implizite Kopplung zwischen einer relativ geringen Anzahl von Verbindungen besteht, die immer innerhalb derselben virtuellen Java -Maschine ausgeführt werden.
- Legen Sie die folgende Umgebungsvariable fest:
AMQ_APP_INSTANCE_MODE=JVM. - Legen Sie die folgende Java -Systemeigenschaft in der Befehlszeile fest, wenn Sie die Anwendung ausführen:
com.ibm.mq.cfg.jmqi.AppInstanceMode=JVM. For example:java -Dcom.ibm.mq.cfg.jmqi.AppInstanceMode=JVM MyApplication
Wenn Sie beide Methoden verwenden, hat die Systemeigenschaft Vorrang. Um den Betriebsmodus wieder auf die Standardeinstellung zurückzusetzen (z. B. wenn die Standard-JVM-Eigenschaftendatei den Modus auf JVM setzt und Sie dies in der Befehlszeile überschreiben möchten), verwenden Sie den Wert JMSConnection.
Eine Anwendung kann die Systemeigenschaft Java ändern, nachdem Sie den Prozess Java gestartet haben. Die Anwendung darf jedoch keine Änderungen an der Eigenschaft vornehmen, nachdem sie MQ -Verbindungen hergestellt hat.
Wenn Sie diesen Modus verwenden, zeigt der Warteschlangenmanager ein zusätzliches IBM MQ -Verbindungshandle an. Dieser Handle stellt die Steuerungsverbindung für die Anwendungsinstanz dar. Dieser Handle wird zusätzlich zu den Handles erstellt, die für JMSConnection - und JMSSession -Objekte erstellt werden, und bleibt bestehen, bis die Verbindung zum letzten JMSConnection -Objekt aus dieser Anwendung getrennt wird.
Einschränkungen im JVM-Modus
- Alle Verbindungen müssen denselben Namen für den Warteschlangenmanager (QMANAGER ) angeben. Wenn eine Verbindung einen Warteschlangen-Manager-Gruppennamen (
*qMgrName, wobei*vom Namen des Warteschlangen-Managers gefolgt wird) verwendet, was bei einem einheitlichen Cluster üblich ist, müssen alle Verbindungen denselben Gruppennamen angeben. - Alle Verbindungen müssen wiederherstellbar sein und dieselben Wiederverbindungsoptionswerte (QMR oder ANY, wie in "Verwendung der Eigenschaft CLIENTRECONNECTOPTIONS zur Aktivierung der automatischen Client-Wiederverbindung innerhalb der IBM MQ -Klassen für JMS " beschrieben) aufweisen.
- Alle Verbindungen müssen denselben Anwendungsnamen (ANWENDUNGSNAME, an einigen Orten auch als APPLTAG bekannt) angeben.
Wenn zwei Verbindungen Optionen haben, die nicht übereinstimmen, wird die spätere Verbindung abgelehnt.