[AIX Solaris HP-UX Linux Windows][IBM i]

Transaktionszeitlimits im Modus ohne ASF vermeiden

Wenn Ihre Messaging-System im Modus ohne ASF (Application Server Facilities) ausgeführt wird, müssen Sie die Transaktionsserviceeigenschaft Zeitlimit für Gesamtlebensdauer der Transaktion und die angepasste Eigenschaft NON.ASF.RECEIVE.TIMEOUT des Nachrichten-Listener-Service richtig konfigurieren, um nicht erwünschte Transaktionszeitlimits zu vermeiden.

Vorbereitende Schritte

Damit die Schritte in dieser Task ausgeführt werden können, muss Ihr Messaging-System im Modus ohne ASF ausgeführt werden. Um den ASF-Status in einen Status ohne ASF zu ändern, fügen Sie die angepasste Eigenschaft NON.ASF.RECEIVE.TIMEOUT wie im Artikel Nachrichten-Listener-Service konfigurieren beschrieben zum Nachrichten-Listener-Service hinzu.

Informationen zu diesem Vorgang

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.

Wenn Ihr Messaging-System im Modus ohne ASF ausgeführt wird, müssen Sie, um nicht erwünschte Transaktionszeitlimitis zu vermeiden, ausreichend Zeit für die Verarbeitung zulassen, bevor das Zeitlimit für die Gesamtlebensdauer der Transaktion erreicht wird. Vergewissern Sie sich, dass der für die angepasste Eigenschaft NON.ASF.RECEIVE.TIMEOUT des Nachrichten-Listener-Service angegebene Wert kleiner ist als der Wert für die Eigenschaft Zeitlimit für Gesamtlebensdauer der Transaktion des Transaktionsservice und dass die Differenz zwischen den Werten der zwei Eigenschaften größer ist als der Wert für den Zeitraum, den die Methode onMessage() Ihrer MDB benötigt, um die Nachricht zu verarbeiten.

Vorgehensweise

  1. Führen Sie Schritt 8 im Artikel Transaktionseigenschaften für einen Anwendungsserver konfigurieren aus, um die Eigenschaft Zeitlimit für Gesamtlebensdauer der Transaktion des Transaktionsservice zu konfigurieren.
  2. Klicken Sie zum Konfigurieren der angepassten Eigenschaft NON.ASF.RECEIVE.TIMEOUT des Nachrichten-Listener-Service auf Server > Servertypen > WebSphere-Anwendungsserver > Servername > [Kommunikation] Messaging > Nachrichten-Listener-Service > Angepasste Eigenschaften.
  3. Klicken Sie auf NON.ASF.RECEIVE.TIMEOUT. Daraufhin wird die Seite Allgemeine Eigenschaften angezeigt.
  4. Ändern Sie den Inhalt des Felds Wert. Der Wert der Eigenschaft NON.ASF.RECEIVE.TIMEOUT muss in Millisekunden angegeben werden. Vergewissern Sie sich, dass der angegebene Wert bei der Konvertierung in Sekunden (Division durch den Wert 1000) kleiner ist als der Wert für das Zeitlimit für Gesamtlebensdauer der Transaktion und dass die Differenz zwischen den Werten der zwei Eigenschaften größer ist als der Wert für den maximalen Zeitraum (angegeben in Sekunden), den die Methode onMessage() Ihrer MDB benötigt, um eine Nachricht zu verarbeiten.
  5. Klicken Sie auf OK.
  6. Stoppen Sie den Anwendungsserver und starten Sie ihn dann erneut.

Beispiel

Wie das folgende Beispiel zeigt, können Transaktionen ein Zeitlimit überschreiten, bevor sie abgeschlossen sind, wenn die Parameter Zeitlimit für Gesamtlebensdauer der Transaktion und NON.ASF.RECEIVE.TIMEOUT nicht richtig konfiguriert sind. Das liegt daran, dass der Thread mit dem Aufruf der Methode receive() beginnt, sobald die Transaktion erstellt wird. Im folgenden Beispiel ist der Parameter NON.ASF.RECEIVE.TIMEOUT auf 110000 Millisekunden (110 Sekunden) und der Parameter Zeitlimit für Gesamtlebensdauer der Transaktion auf 120 Sekunden gesetzt, und die Methode onMessage() der MDB benötigt 15 Sekunden, um eine Nachricht zu verarbeiten. Das Beispiel setzt voraus, dass eine Nachricht am Ziel erst erscheint, wenn die Methode receive() das Zeitlimit beinahe überschritten hat:
  1. Der Listener-Port wird gestartet, ordnet einen Thread aus dem Thread-Pool zu und erstellt eine Transaktion im Thread.
  2. Der Thread ruft die Methode receive() auf, um die Empfangsbereitschaft für Nachrichten sicherzustellen.
  3. Nach 110 Sekunden erscheint eine Nachricht am Ziel.
  4. Der Thread entfernt die Nachricht aus dem Ziel und ruft die Methode onMessage() der MDB auf, um mit der Verarbeitung der Nachricht zu beginnen.
  5. Zehn Sekunden später ist das Transaktionszeitlimit erreicht. Der Anwendungsserver markiert die Transaktion für den Rollback.
  6. Fünf Sekunden später beendet die Methode onMessage() die Verarbeitung der Nachricht und versucht, die Transaktion festzuschreiben.
  7. Der gesamte Zeitraum, der seit dem Start der Transaktion verstrichen ist, beträgt 125 Sekunden (110 Sekunden auf eine Nachricht warten und 15 Sekunden zur Verarbeitung der Nachricht). Da dieser Zeitraum länger ist als das Transaktionszeitlimit, verhindert der Anwendungsserver, dass die Transaktion festgeschrieben wird, und sie wird zurückgesetzt.

Symbol, das den Typ des Artikels anzeigt. Taskartikel



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