Feststellen, warum Publish/Subscribe-Nachrichten von einer Subskription über einen fernen Nachrichtenpunkt nicht empfangen werden

Es gibt eine Gruppe von Prüfungen, die Sie ausführen können, um festzustellen, warum Publish/Subscribe-Nachrichten nicht von einer Subskription in einem Service Integration Bus empfangen werden, wenn die Nachrichten über einen fernen Nachrichtenpunkt weitergeleitet werden.

Vorbereitende Schritte

Führen Sie die im Artikel Feststellen, warum Publish/Subscribe-Nachrichten nicht bei der Subskription ankommen beschriebenen Schritte aus. In diesem Artikel werden vorläufige Prüfungen und Überprüfungstasks beschrieben, die Sie ausführen müssen, bevor Sie mit dieser Task fortfahren.

Informationen zu diesem Vorgang

Führen Sie diese Task im Rahmen der Task Feststellen, warum Publish/Subscribe-Nachrichten nicht bei der Subskription ankommen aus. Diese Task erläutert, wie Sie den Nachrichtenfluss in einem Publish/Subscribe-Messaging-Szenario untersuchen können, in dem Nachrichten über einen fernen Nachrichtenpunkt an eine nicht permanente Subskription weitergeleitet werden. Die folgenden Abbildungen veranschaulichen zwei mögliche Situationen. Die gepunkteten Linien in den Abbildungen stehen für die Beziehungen zwischen den Veröffentlichungspunkten, die durchgezogenen Linien zeigen den Nachrichtenfluss an. In Abbildung 1 enthält ein Bus drei Messaging-Engines: ME1, ME2 und ME3. Die veröffentlichende Anwendung ist mit ME1 verbunden und subskribierende Anwendungen mit ME2 und ME3. ME1 enthält ferne Veröffentlichungspunkte, die die Veröffentlichungspunkte in ME2 und ME3 darstellen. In Abbildung 2 enthält ein Bus drei Messaging-Engines: ME1, ME2 und ME3. Die veröffentlichende Anwendung ist mit ME1 verbunden, und die subskribierenden Anwendungen mit ME2 und ME3. ME1 enthält ferne Veröffentlichungspunkte, die die Veröffentlichungspunkte in ME2 und ME3 darstellen. Die subskribierende Anwendung B ist mit ME3 verbunden und empfängt über eine ferne Subskription in ME2 Veröffentlichungen von ME1. Auf die Messaging-Engines wird in den folgenden Schritten verwiesen.
Abbildung 1. Erzeugen von Punkt-zu-Punkt-Nachrichten mit einem fernen NachrichtenpunktDiese Abbildung beschreibt die Generierung von Punkt-zu-Punkt-Nachrichten mit einem fernen Nachrichtenpunkt.
Abbildung 2. Publish/Subscribe-Messaging mit einem fernen NachrichtenpunktDiese Abbildung beschreibt das Publish/Subscribe-Messaging mit einem fernen Nachrichtenpunkt.
Die folgenden Schritte gelten für beide Szenarien.

Vorgehensweise

  1. Zeigen Sie die Eigenschaften für ME1 an, indem Sie auf Serviceintegration -> Busse -> Busname -> [Topologie] Messaging-Engines -> Name_der_Engine klicken.
  2. Klicken Sie auf der Registerkarte Laufzeit für ME1 auf [Ferne Nachrichtenpunkte] Ferne Veröffentlichungspunkte und anschließend auf den fernen Veröffentlichungspunkt, der den Veröffentlichungspunkt in ME2 darstellt. Klicken Sie auf Topics und vergewissern Sie sich, dass das Topic des Konsumenten aufgelistet ist. Falls das Topic nicht aufgelistet ist, führen Sie die folgenden Prüfungen durch:
  3. Es ist möglich, dass die Registrierung der Subskription erst nach der Veröffentlichung der Nachricht vorgenommen wurde. Veröffentlichen Sie die Nachricht erneut und prüfen Sie anschließend, ob die Nachricht empfangen wurde.
  4. Zeigen Sie in ME1 erneut den fernen Veröffentlichungspunkt an, der den Veröffentlichungspunkt in ME2 darstellt. Überprüfen Sie den Wert im Feld Aktuelle abgehende Nachrichten.
  5. Wenn die aktuelle Anzahl abgehender Nachrichten größer als null ist, wurden Nachrichten erzeugt, aber von ME2 möglicherweise nicht empfangen.
    1. Vergewissern Sie sich, dass die beiden Messaging-Engines miteinander kommunizieren können. Lesen Sie hierzu den Artikel Fehlerbehebung bei der Serviceintegration: Kommunikation zwischen zwei Messaging-Engines in einem Bus überprüfen.
    2. Suchen Sie nach älteren Nachrichten im Topicbereich. Sollten ältere Nachrichten vorhanden und einige oder alle für ME2 bestimmt sein, warten Sie einige Augenblicke und aktualisieren Sie dann die Ansicht.
      • Wenn einige der Nachrichten nicht mehr im Topicbereich enthalten sind, stellt das System derzeit Nachrichten zu, befindet sich aber mit der Zustellung im Rückstand. Warten Sie, bis das System den Rückstand aufgeholt hat, und untersuchen Sie dann den Veröffentlichungspunkt in ME2, um festzustellen, ob die Testnachricht angekommen ist.
      • Wenn noch alle Nachrichten im Topicbereich enthalten sind, wird die Übertragung der Nachrichten möglicherweise durch eine Nachricht im Status "Festschreiben" blockiert. Später gesendete Nachrichten müssen warten, bis diese Nachricht zugestellt ist, andernfalls gerät die Nachrichtenreihenfolge durcheinander.

        Wenn eine Nachricht im Status "Festschreiben" gefangen ist, ist diese Nachricht in einer unaufgelösten Transaktion enthalten. Unter Umständen ist ein Ressourcenmanager, z. B. eine Datenbank, blockiert. Beheben Sie den Fehler im Ressourcenmanager. Sollte dieser Versuch fehlschlagen, notieren Sie die Transaktions-ID der Nachricht, und klicken Sie auf Server -> Servertypen -> WebSphere-Anwendungsserver -> Servername -> Laufzeit > [Weitere Eigenschaften] Transaktionsservice, um die allgemeinen Eigenschaften für den Transaktionsservice anzuzeigen. Verwenden Sie die Links Überprüfen, um die Transaktion aufzulösen, deren globale ID mit der Transaktions-ID der Nachricht übereinstimmt.

    3. Überprüfen Sie den Status der Testnachricht:
      • Wenn die Testnachricht den Status "Senden anstehend" hat, wartet die Nachricht darauf, versendet zu werden. Möglicherweise akzeptiert ME2 derzeit keine Nachrichten. Führen Sie die folgenden Prüfungen durch:
        • Vergewissern Sie sich, dass die beiden Messaging-Engines miteinander kommunizieren können. Lesen Sie hierzu den Artikel Fehlerbehebung bei der Serviceintegration: Kommunikation zwischen zwei Messaging-Engines in einem Bus überprüfen.
        • Prüfen Sie, ob der Veröffentlichungspunkt in ME2 voll ist: Zeigen Sie die Laufzeiteigenschaften für den Veröffentlichungspunkt an und vergleichen Sie den Wert im Feld Aktuelle Nachrichtenanzahl mit dem Wert im Feld Oberer Schwellenwert für Nachrichten. Falls die aktuelle Nachrichtenanzahl gleich dem oberen Schwellenwert für Nachrichten ist, akzeptiert die Messaging-Engine so lange keine neuen Nachrichten, bis die Nachrichten in der Warteschlange konsumiert sind. Sie können den Konsumenten erneut starten und warten, bis der Rückstand aufgeholt ist, oder die Nachrichten löschen.
        • Vergewissern Sie sich, dass die Konfigurationsänderungen weitergegeben wurden. Stellen Sie sicher, dass ME2 über die Existenz des Veröffentlichungspunkts Kenntnis erhält, indem Sie die aktuellen Konfigurationseinstellungen im Anwendungsserver von ME2 implementierten.
      • Wenn die Testnachricht den Status "Bestätigung anstehend" hat, wurde die Nachricht zwar gesendet, aber ME2 hat die Nachricht entweder noch nicht empfangen oder noch nicht verarbeitet. Stellen Sie sicher, dass in der Übertragungswarteschlange keine Nachrichten im Status "Festschreiben" vor der Testnachricht enthalten sind. Warten Sie dann einen Moment und untersuchen Sie den Veröffentlichungspunkt erneut, um festzustellen, ob die Testnachricht angekommen ist. Sollten Nachrichten im Status "Festschreiben" gefangen sein, ziehen Sie zur Fehlerbehebung den folgenden Punkt heran.
      • Wenn die Testnachricht (oder eine andere Nachricht) den Status "Festschreiben" hat, ist die Nachricht in einer unaufgelösten Transaktion enthalten. Unter Umständen ist ein Ressourcenmanager, z. B. eine Datenbank, blockiert. Beheben Sie den Fehler im Ressourcenmanager. Sollte dieser Versuch fehlschlagen, notieren Sie die Transaktions-ID der Nachricht, und klicken Sie auf Server -> Servertypen -> WebSphere-Anwendungsserver -> Servername -> Laufzeit > [Weitere Eigenschaften] Transaktionsservice, um die allgemeinen Eigenschaften für den Transaktionsservice anzuzeigen. Verwenden Sie die Links Überprüfen, um die Transaktion aufzulösen, deren globale ID mit der Transaktions-ID der Nachricht übereinstimmt.
  6. Wenn die Anzahl abgeschlossener abgehender Nachrichten größer ist als null, wurden Nachrichten von ME2 erzeugt und verarbeitet, aber die Testnachricht ist nicht angekommen. Führen Sie die erzeugende Anwendung erneut aus und stellen Sie sicher, dass sich die Anzahl abgeschlossener abgehender Nachrichten in ME1 erhöht (der Zähler für aktive abgehende Nachrichten kann sich vor dem Zähler für abgeschlossene abgehende Nachrichten erhöhen).
    • Sollte sich an den Zählerwerten nichts ändern, wurde die Nachricht in ME1 nicht erzeugt. Vergewissern Sie sich, dass die erzeugende Anwendung mit der Messaging-Engine verbunden ist. (Informationen hierzu finden Sie im Artikel Die Messaging-Engine bestimmen, mit der eine Anwendung verbunden ist).
    • Wenn sich die Zähler erhöhen, ist die Nachricht in ME2 angekommen, wurde aber entweder konsumiert, an das Ausnahmeziel gesendet oder sie ist verfallen. Stellen Sie fest, ob Konsumenten vorhanden sind, und führen Sie die vorläufigen Tests erneut aus.
  7. Wenn die Anzahl der aktuellen und abgeschlossenen Nachrichten gleich null ist, prüfen Sie, ob die erzeugende Anwendung Nachrichten für dieses Ziel erzeugt, indem Sie die vorläufigen Tests erneut ausführen.
  8. Sie haben jetzt den Nachrichtenfluss zwischen ME1 und ME2 überprüft. Wenn Sie eine Anwendung haben, die mit der subskribierenden Anwendung A oder B in Abbildung 1 vergleichbar ist, ist die Untersuchung abgeschlossen. Sollten weiterhin Probleme auftreten, wenden Sie sich an einen zuständigen IBM Servicemitarbeiter. Wenn Sie eine Anwendung haben, die mit der subskribierenden Anwendung B in Abbildung 2 vergleichbar ist, d. h. eine Anwendung mit einer fernen Subskription, müssen Sie auch den Nachrichtenfluss zwischen ME2 und ME3 untersuchen. Führen Sie dazu die folgenden Schritte aus. Um festzustellen, ob Ihre Anwendung eine ferne Subskription verwendet, zeigen Sie die Veröffentlichungspunkte für den relevanten Topicbereich an. Suchen Sie Ihre Subskription und überprüfen Sie den Namen des Veröffentlichungspunkts. Der Name hat das Format Name_des_Topicbereichs@Name_der_Messaging-Engine. Damit erhalten Sie den Namen der Messaging-Engine, die Ihre Subskription enthält. Falls diese Messaging-Engine nicht die Messaging-Engine ist, mit der die erzeugende Anwendung verbunden ist, und auch nicht die, mit der die konsumierende Anwendung verbunden ist, wird eine ferne Subskription verwendet.
  9. Zeigen Sie die Subskriptionen für den Veröffentlichungspunkt in ME2 an und suchen Sie in dieser Liste Ihre Subskription. Falls die Subskription nicht aufgelistet ist, führen Sie die folgenden Prüfungen durch:
  10. Klicken Sie auf Ihre Subskription und anschließend auf Bekannte ferne Subskriptionspunkte. Klicken Sie in der daraufhin angezeigten Liste auf den Namen der Messaging-Engine, die in der Abbildung durch ME3 dargestellt wird. Klicken Sie auf Nachrichtenanforderungen. Daraufhin werden die Anforderungen angezeigt, die von der Subskription in ME2 von der fernen Subskription in ME3 empfangen wurden.
  11. Starten Sie, sofern möglich, die konsumierende Anwendung und stellen Sie sicher, dass sie aktiv versucht, eine Nachricht zu konsumieren (die Anwendung muss den Status "Empfang mit Wartezeit" oder "Asynchroner Konsument registriert" haben), und führen Sie dann die Anweisungen im Artikel Feststellen, warum Nachrichten über einen fernen Nachrichten- oder Subskriptionspunkt nicht konsumiert werden, wenn die Anwendung gestartet ist aus. Wenn Ihre Anwendung nicht in der Lage ist, über einen längeren Zeitraum hinweg (lange genug, um das Problem zu untersuchen) Nachrichten aktiv zu konsumieren, führen Sie die im Artikel Feststellen, warum Nachrichten über einen fernen Nachrichten- oder Subskriptionspunkt nicht konsumiert werden, wenn die Anwendung gestoppt ist beschriebenen Schritte aus.

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