Verarbeitung von Nachrichten im ASF-Modus

Im ASF-Modus werden Serversitzungen und Threads Arbeitsvorgängen nur zugeordnet, wenn eine Nachricht gefunden wird, die für die Message-driven Bean (MDB) geeignet ist. Die Anzahl der Threads, die eine MDB gleichzeitig verarbeiten kann, wird mit dem Wert der Eigenschaft Maximale Anzahl Sitzungen für den Listener-Port festgelegt werden.

In WebSphere Application Server Version 7 und höher sind Listener-Ports stabilisiert. Weitere Informationen finden Sie im Artikel zu den stabilisierten Features. Deshalb sollten Sie die Migration Ihrer WebSphere MQ-MDB-Implementierungskonfigurationen von Listener-Ports auf Aktivierungsspezifikationen planen. [AIX Solaris HP-UX Linux Windows][IBM i]Weitere Informationen zum Konfigurieren der Aktivierungsspezifikationen für Nicht-ASF-Modus finden Sie unter Aktivierungsspezifikation für Nicht-ASF-Modus konfigurieren. Sie sollten die Migration jedoch erst dann durchführen, wenn Sie sicher sind, dass die Anwendung nicht in Anwendungsservern einer früheren Version als WebSphere Application Server Version 7 ausgeführt werden muss. Wenn beispielsweise in einem Anwendungs-Server-Cluster einige Member Version 6.1 und andere Member eine höhere Version haben, sollten Sie Anwendungen in diesem Cluster erst dann auf die Verwendung von Aktivierungsspezifikationen migrieren, wenn Sie alle Anwendungsserver im Cluster auf die höhere Version migriert haben.

[AIX Solaris HP-UX Linux Windows][IBM i]
Die folgende Abbildung zeigt, wie das Messaging zwischen WebSphere Application Server und IBM MQ stattfindet, wenn der Nachrichten-Listener-Service im ASF-Modus arbeitet.
Abbildung 1. Nachrichtenverarbeitung im ASF-Modus auf verteilten und IBM i-Systemen
Die Abbildung wird im Begleittext beschrieben.
Wie in der Abbildung gezeigt, werden die Nachrichten wie folgt verarbeitet, wenn der Nachrichten-Listener-Service im ASF-Modus arbeitet:
  1. Beim Starten des Listener-Ports wird eine Verbindung zum IBM MQ-Warteschlangenmanager geöffnet und ein interner Warteschlangenagent erstellt.
  2. Der Warteschlangenagent wartet am JMS-Ziel auf Nachrichten.
  3. Der Warteschlangenagent erkennt eine Nachricht.
  4. Der Warteschlangenagent prüft, ob die Nachricht für die MDB, die den Listener-Port verwendet, geeignet ist.
  5. Wenn die Nachricht für die MDB geeignet ist, ordnet der Listener-Port einen Thread aus dem Thread-Pool des Nachrichten-Listener-Service und eine Serversitzung aus dem Sitzungspool des Anwendungsservers zu. Falls die Serversitzung seit dem Start des Listener-Ports zum ersten Mal verwendet wurde, wird eine Verbindung zum JMS-Provider geöffnet. Die zugeordnete Serversitzung wird im zugeordneten Thread ausgeführt.
  6. Der Warteschlangenagent übergibt die ID der Nachricht an die Serversitzung. Danach wartet er wieder auf Nachrichten.
  7. Die Serversitzung verwendet die Nachrichten-ID, um die Nachricht vom Ziel anzurufen.
  8. Die Serversitzung verarbeitet die Nachricht, indem sie die Methode onMessage() der MDB aufruft.
  9. Nach der Verarbeitung der Nachricht wird die Serversitzung beendet und an den Sitzungspool des Anwendungsservers zurückgegeben. Die Verbindung, die die Serversitzung zum JMS-Provider geöffnet hat, bleibt geöffnet, sodass die Serversitzung die Verbindung bei der nächsten Verwendung nicht erneut aufbauen muss.
  10. Der Thread wird beendet und an den Thread-Pool des Nachrichten-Listener-Service zurückgegeben.

Die Anzahl der Threads, die eine MDB gleichzeitig verarbeiten kann, wird mit dem Wert der Eigenschaft Maximale Anzahl Sitzungen für den Listener-Port festgelegt werden. Wenn Sie Maximale Anzahl Sitzungen auf den Standardwert 1 setzen, kann die MDB nur jeweils eine einzige Nachricht verarbeiten. Wenn der Warteschlangenagent eine zweite Nachricht findet, bevor die Verarbeitung der ersten Nachricht beendet ist, blockiert der Warteschlangenagent die zweite Nachricht deshalb, bis die Verarbeitung der ersten Nachricht abgeschlossen und die Serversitzung wieder verfügbar ist.

Wenn Sie mehrere Nachrichten gleichzeitig verarbeiten möchten, können Sie dies im ASF-Modus zulassen, indem Sie Maximale Anzahl Sitzungen auf einen höheren Wert als 1 setzen. Setzen Sie Maximale Anzahl Sitzungen beispielsweise auf 2 setzen, werden Nachrichten wie folgt verarbeitet:
  1. Der Warteschlangenagent erkennt die erste Nachricht und ordnet wie im ersten Beispiel einen Thread und eine Serversitzung zu. Die Nachricht wird mit der Methode onMessage() der MDB verarbeitet.
  2. Während der Verarbeitung der ersten Nachricht wartet der Warteschlangenagent wieder auf Nachrichten.
  3. Der Warteschlangenagent erkennt die zweite Nachricht und ordnet einen zweiten Thread und eine zweite Serversitzung zu. Die Nachricht wird mit der Methode onMessage() der MDB verarbeitet.
  4. Nach der Verarbeitung der ersten Nachricht wird die erste Serversitzung beendet und an den Sitzungspool des Servers zurückgegeben. Der erste Thread wird beendet und an den Thread-Pool des Nachrichten-Listener-Service zurückgegeben.
  5. Nach der Verarbeitung der zweiten Nachricht wird die zweite Serversitzung beendet und an den Sitzungspool des Servers zurückgegeben. Der zweite Thread wird beendet und an den Thread-Pool des Nachrichten-Listener-Service zurückgegeben.
[z/OS]

Die folgende Abbildung zeigt, wie das Messaging zwischen WebSphere Application Server und IBM MQ stattfindet, wenn der Nachrichten-Listener-Service im ASF-Modus arbeitet.

Abbildung 2. Nachrichtenverarbeitung im ASF-Modus auf z/OS-Systemen
Die Abbildung wird im Begleittext beschrieben.
Wie in der Abbildung gezeigt, werden die Nachrichten wie folgt verarbeitet, wenn der Nachrichten-Listener-Service im ASF-Modus arbeitet:
  1. Beim Starten des Listener-Ports wird eine Verbindung zum IBM MQ-Warteschlangenmanager geöffnet und ein interner Warteschlangenagent erstellt.
  2. Der Warteschlangenagent wartet am JMS-Ziel auf Nachrichten.
  3. Der Warteschlangenagent erkennt eine Nachricht und prüft, ob die Nachricht für die MDB, die den Listener-Port verwendet, geeignet ist.
  4. Wenn die Nachricht für die MDB geeignet ist, übergibt der Warteschlangenagent die Nachrichten-ID in einem Arbeitsdatensatz. Anschließend wird der Arbeitsdatensatz an die WLM-Warteschlange (Workload-Management) gesendet.
  5. Der Warteschlangenagent wartet wieder auf Nachrichten.
  6. Die WLM-Warteschlange startet einen ASF-Dispatcher in einer Servantregion für die Verarbeitung des Arbeitsdatensatzes.
  7. Der ASF-Dispatcher ordnet eine Serversitzung aus dem Sitzungspool des Servers zu.
  8. Die Serversitzung verwendet die Nachrichten-ID aus dem Arbeitsdatensatz, um die Nachricht vom Ziel abzurufen.
  9. Die Serversitzung verarbeitet die Nachricht, indem sie die Methode onMessage() der MDB aufruft.
  10. Nach der Verarbeitung der Nachricht wird die Serversitzung beendet und an den Sitzungspool des Anwendungsservers zurückgegeben. Die Verbindung, die die Serversitzung zum JMS-Provider geöffnet hat, bleibt geöffnet, sodass die Serversitzung die Verbindung bei der nächsten Verwendung nicht erneut aufbauen muss.
  11. Der Thread wird beendet und an den Thread-Pool des Nachrichten-Listener-Service zurückgegeben.

Die Anzahl der Threads, die eine MDB gleichzeitig verarbeiten kann, wird mit dem Wert der Eigenschaft Maximale Anzahl Sitzungen für den Listener-Port festgelegt werden. Wenn Sie Maximale Anzahl Sitzungen auf den Standardwert 1 setzen, kann die MDB nur jeweils eine einzige Nachricht verarbeiten. Wenn der Warteschlangenagent eine zweite Nachricht findet, bevor die Verarbeitung der ersten Nachricht beendet ist, blockiert der Warteschlangenagent die zweite Nachricht deshalb, bis die Verarbeitung der ersten Nachricht abgeschlossen und die Serversitzung wieder verfügbar ist.

Wenn Sie mehrere Nachrichten gleichzeitig verarbeiten möchten, können Sie dies im ASF-Modus zulassen, indem Sie Maximale Anzahl Sitzungen auf einen höheren Wert als 1 setzen. Setzen Sie Maximale Anzahl Sitzungen beispielsweise auf 2 setzen, werden Nachrichten wie folgt verarbeitet:
  1. Der Warteschlangenagent erkennt die erste Nachricht und erstellt wie im ersten Beispiel einen Arbeitsdatensatz.
  2. Der Arbeitsdatensatz wird an die WLM-Warteschlange gesendet und ein ASF-Dispatcher in einer Servantregion gestartet.
  3. Der ASF-Dispatcher ordnet eine Serversitzung zu, und diese Nachricht wird mit der Methode onMessage() der MDB verarbeitet.
  4. Während der Verarbeitung der ersten Nachricht wartet der Warteschlangenagent wieder auf Nachrichten.
  5. Der Warteschlangenagent erkennt die zweite Nachricht und ordnet einen zweiten Thread und eine zweite Serversitzung zu. Die Nachricht wird mit der Methode onMessage() der MDB verarbeitet.
  6. Nach der Verarbeitung der ersten Nachricht wird die erste Serversitzung beendet und an den Sitzungspool des Servers zurückgegeben. Der erste Thread wird beendet und an den Thread-Pool des Nachrichten-Listener-Service zurückgegeben.
  7. Nach der Verarbeitung der zweiten Nachricht wird die zweite Serversitzung beendet und an den Sitzungspool des Servers zurückgegeben. Der zweite Thread wird beendet und an den Thread-Pool des Nachrichten-Listener-Service zurückgegeben.

Symbol, das den Typ des Artikels anzeigt. Konzeptartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cmb_asfnonasf_asf
Dateiname:cmb_asfnonasf_asf.html