Strikte Nachrichtenreihenfolge mit Aktivierungsspezifikationen oder ASF-Listener-Ports, die mit WebSphere MQ Version 6.0 verbunden sind

In den folgenden Artikeln wird beschrieben, wie eine strikte Nachrichtenreihenfolge erreicht werden kann, wenn MDB-Anwendungen im WebSphere MQ-Messaging-Provider implementiert werden, falls in der Anwendung keine besonderen Funktionen zur Bearbeitung ungeordnet eingehender Nachrichten codiert wurden.

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.

Für dieses Szenario gelten folgende Voraussetzungen:
  • Die MDB-Anwendung ist transaktionsorientiert.
  • Der Rücksetzschwellenwert (BOTHRESH) in der WebSphere MQ-Warteschlange wurde auf 0 gesetzt.
  • Sie verwenden WebSphere MQ Version 6.0.

Konfiguration von WebSphere Application Server für geordnete Übermittlung

  • Wenn Sie Listener-Ports verwenden, muss der Wert Maximale Anzahl Sitzungen für die Listener-Ports in WebSphere Application Server auf 1 gesetzt sein.
  • Wenn Sie Aktivierungsspezifikationen verwenden, muss der Wert Maximale Anzahl Sitzungen für die Aktivierungsspezifikationen in WebSphere Application Server auf 1 gesetzt sein.

Wichtige Informationen zu dieser Konfiguration

  • ASF-Listener-Ports und Aktivierungsspezifikationen von WebSphere MQ enthalten zwei eigenständige Komponenten, die zusammen die Nachrichtenübermittlung realisieren. Diese zwei Komponenten werden vom Warteschlangenmanager als eigenständige Anwendungen betrachtet:
    • Eine Komponente erkennt die Nachrichten, wenn sie eingehen, konsumiert sie jedoch nicht. Stattdessen teilt sie sie der zweiten Komponente zu.
    • Die andere Komponente ist ein Serversitzungspool, der einen Thread zuordnet, um die Nachricht innerhalb der Anwendungstransaktion zuzuordnen und an die Methode onMessage() der MDB zu übermitteln.
    Anmerkung: Wenn ein ASF-Listener-Port oder eine Aktivierungsspezifikation mit einem WebSphere MQ-Warteschlangenmanager der Version 6.0 verbunden ist, wird ein weniger effizienter Abfragemechanismus (auf Basis eines Anzeigecursors) verwendet, um die Nachrichten in der Warteschlange zu erkennen.

Bedingungen, unter denen Nachrichten ungeordnet eingehen können

Nachrichten können bei dieser Implementierung unter folgenden Bedingungen ungeordnet eingehen:
  • Nachrichten können während der Transaktionswiederherstellung außerhalb der Reihenfolge zugestellt werden:
    Anmerkung: Es muss eine bestimmte Gruppe von Ereignissen in einer bestimmten Reihenfolge eintreten, damit dieses Szenario eintritt. Deshalb ist dieses Szenario nicht üblich. Wenn die Einhaltung der Reihenfolge bei der Nachrichtenzustellung jedoch für die Ausführung Ihrer Anwendung kritisch ist, müssen Sie dies berücksichtigen.
    • Eine Nachrichtenzustellung außerhalb der Reihenfolge kann bei dieser Implementierungsoption während der Wiederherstellung nach einem Fehler in einer der folgenden Komponenten auftreten:
      • Anwendungsserver, in dem die MDB ausgeführt wird
      • WebSphere MQ-Warteschlangenmanager
      • Netz, das den Anwendungsserver und den Warteschlangenmanager miteinander verbindet
    • Wenn eine dieser Komponenten mitten in der zweiphasigen Festschreibung einer MDB-Transaktion ausfällt, stellt der Transaktionsmanager des Anwendungsservers seine Verbindung zum Warteschlangenmanager wieder her, um die Transaktion aufzulösen, sobald die Komponente wieder verfügbar ist.
    • Dieser Wiederherstellungsprozess ist asynchron und es ist möglich, dass die Zustellung neuer Nachrichten an die MDB beginnt, bevor der Transaktionswiederherstellungsprozess abgeschlossen ist. Wenn das Ergebnis der Transaktionswiederherstellung ein Rollback der Transaktion ist, wird die Nachricht an die WebSphere MQ-Warteschlange zurückgegeben und der Anwendung erneut zugestellt. Dies geschieht möglicherweise, nachdem bereits neue Nachrichten zugestellt wurden.
  • Nach einem Rollback der Transaktion kann die nächste verfügbare Nachricht in der Warteschlange zugestellt werden, bevor die zurückgegebene Nachricht neu zugestellt wird:
    • Wenn Sie die Einstellung Maximale Anzahl Wiederholungen für einen ASF-Listener-Port auf null setzen, wird die Zustellung von Nachrichten außerhalb der Reihenfolge nach einem Rollback verhindert, indem der Listener-Port bei einem Rollback gestoppt wird. Der Listener-Port muss jedoch manuell erneut gestartet werden.
    • Wenn Sie für eine Aktivierungsspezifikation Endpunkt stoppen, wenn Nachrichtenzustellung scheitert auswählen und Anzahl sequenzieller Zustellungsfehler vor dem Aussetzen des Endpunkts auf 0 setzen, wird die Zustellung von Nachrichten außerhalb der Reihenfolge nach einem Rollback verhindert, indem der Nachrichtenendpunkt bei einem Rollback angehalten wird. Der Nachrichtenendpunkt für die MDB muss jedoch anschließend manuell gestartet werden. Weitere Informationen finden Sie im Information Center von WebSphere MQ.
  • Während des normalen Betriebs, wenn mehrere Threads Nachrichten mit Transaktionen an das Ziel senden (für verschiedene Folgen):
    • Dieses Verhalten ist bedingt durch den Betrieb des WebSphere MQ-Anzeigecursors.
    • Wenn eine Nachricht in einer WebSphere MQ-Warteschlange festgeschrieben wird, während die Festschreibung einer anderen, an das Ziel gesendeten Nachricht rückgängig gemacht wird (innerhalb einer noch nicht abgeschlossenen Transaktion), bewegt sich der Anzeigecursor zur neueren Nachricht in der Warteschlange und wechselt nicht automatisch zurück zur früheren Nachricht, wenn sie schließlich festgeschrieben wird. Das kann dazu führen, dass Nachrichten in der Warteschlange hinter dem Anzeigecursor erscheinen.
    • Wenn dieser Fall eintritt, werden neuere Nachrichten eventuell an die MDB übermittelt, bevor der WebSphere MQ-Messaging-Provider die Warteschlange erneut scannt und ermittelt die Nachricht, die hinter dem Anzeigecursor erscheint.
  • Wenn das Attribut für die Reihenfolge der Nachrichtenübermittlung (MSGDLYSEQ) der WebSphere MQ-Warteschlange, die von einer Aktivierungsspezifikation oder einem ASF-Listener-Port überwacht wird, auf "priority" gesetzt ist, kann das Ordnen der Nachrichten in einer bestimmten Reihenfolge aus folgenden Gründen fehlschlagen:
    • Wenn Nachrichten mit verschiedenen Prioritäten an eine Warteschlange gesendet werden, können Nachrichten mit einer niedrigeren Priorität vor Nachrichten mit einer höheren Priorität übermittelt werden. Dieses Verhalten ist bedingt durch den Betrieb des WebSphere MQ-Anzeigecursors. Der Anzeigecursor bewegt sich durch alle verfügbaren Nachrichten mit der höchsten Priorität und fährt dann mit Nachrichten mit einer niedrigeren Priorität fort. Wenn Nachrichten einer höheren Priorität eingehen, während der Anzeigecursor gerade Nachrichten einer niedrigeren Priorität durchsucht, werden die Nachrichten der höheren Priorität möglicherweise erst übermittelt, wenn alle Nachrichten der niedrigeren Priorität in der Warteschlange übermittelt wurden.
    • ASF-Listener-Ports oder Aktivierungsspezifikationen, die Warteschlangen mit der Einstellung FIFO für das Attribut Reihenfolge für Nachrichtenübermittlung durchsuchen, erkennen dieses Problem nicht, da WebSphere MQ die Nachrichten in der Warteschlange nach Eingang und nicht nach Priorität ordnet.

Hinweise für eine Clusterimplementierung

  • Sie können die MDB nur in einem Cluster-Member aktivieren, da der Anwendungsserver kein Tool hat, das diese Aktivierung automatisch durchführen kann.
  • Sie können den Startstatus von Listener-Ports unabhängig von der Einstellung für das Startdatum einer Anwendung auf "Gestoppt" setzen.
  • Sie können Anwendungen, ASF-Listener-Ports und Nachrichtenendpunkte mit MBean-Schnittstellen manuell starten und stoppen, indem Sie wsadmin-Scripts oder die Schnittstellen vom Typ "com.ibm.websphere.management.AdminClient" aus dem Java™-Code verwenden.

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=cmm_wmq_smo_mq6
Dateiname:cmm_wmq_smo_mq6.html