Es gibt eine Reihe von Prüfungen, die Sie ausführen können, um festzustellen, warum Nachrichten an einem
Ziel in einem Service Integration Bus nicht konsumiert werden, wenn die Nachrichten über einen fernen
Nachrichtenpunkt weitergeleitet werden und die konsumierende Anwendung aktiv ist.
Informationen zu diesem Vorgang
Sie führen diese Task im Rahmen der Task
Feststellen, warum Punkt-zu-Punkt-Nachrichten nicht konsumiert werden oder der Task
Feststellen, warum Publish/Subscribe-Nachrichten nicht bei der Subskription ankommen aus. Diese Task beschreibt, wie Sie den Nachrichtenfluss
in einem Szenario untersuchen können, in dem Nachrichten über einen fernen Nachrichtenpunkt weitergeleitet werden und die
konsumierende Anwendung gestartet ist.
Die folgenden Abbildungen veranschaulichen zwei mögliche Szenarien.
In Abbildung 1 enthält ein Bus drei Messaging-Engines: ME1, ME2 und ME3. Die erzeugende
Anwendung ist mit ME1 verbunden und die konsumierende Anwendung mit ME3. Die Nachrichten
werden von ME1 über ME2 an ME3 weitergeleitet und von ME3 konsumiert.
Dieses Szenario beschäftigt sich nur mit ME2 und ME3. ME3 enthält einen fernen
Nachrichtenpunkt, der den Nachrichtenpunkt in ME2 darstellt. In Abbildung 2 enthalten ME2 und ME3 Veröffentlichungspunkte, die von fernen Veröffentlichungspunkten in
ME1 dargestellt werden, mit der die erzeugende Anwendung verbunden ist.
Die subskribierende Anwendung B ist mit ME3 verbunden und empfängt Nachrichten indirekt
von ME1 und zwar über eine Subskription in ME2 über einen fernen Subskriptionspunkt in ME3. Auf diese Messaging-Engines wird in den folgenden Schritten verwiesen.
Abbildung 1. Punkt-zu-Punkt-Nachrichten über einen fernen Nachrichtenpunkt konsumieren
Abbildung 2. Publish/Subscribe-Messaging mit einem fernen Nachrichtenpunkt
Vorgehensweise
- Wenn Sie vor Beginn dieser Task die im Artikel Feststellen, warum Punkt-zu-Punkt-Nachrichten nicht konsumiert werden oder Artikel Feststellen, warum Publish/Subscribe-Nachrichten nicht bei der Subskription ankommen beschriebenen Schritte
ausgeführt haben, müssen Sie eine Liste der Nachrichtenanforderungen erhalten haben.
Prüfen Sie, ob die Liste eine Anforderung mit einem Selektor enthält, der einer verfügbaren
Nachrichten am Nachrichtenpunkt in ME2 entspricht.
Ist eine solche Anforderung nicht in der Liste enthalten, konsumiert die Anwendung keine Nachrichten.
Überprüfen Sie die konsumierende Anwendung auf Fehler:
- Stellen Sie sicher, dass die konsumierende Anwendung gestartet ist.
- Stellen Sie sicher, dass die Anwendung aktiv versucht, Nachrichten zu konsumieren:
- Wenn die Anwendung einen asynchronen Konsumenten verwendet, stellen Sie sicher, dass dieser Konsument registriert ist.
- Wenn es sich um eine synchrone Anwendung handelt, stellen Sie sicher, dass der Konsument
den Status "Empfang mit Wartezeit" hat (möglicherweise muss in der Anwendung die Wartezeit für Nachrichten verlängert werden).
- Überprüfen sie den Status der aktiven Anforderung:
- Wenn die Anforderung den Status "Wert" hat, wurde eine Nachricht abgerufen und an die konsumierende Anwendung zurückgegeben, aber
die Anwendung hat die Nachricht noch nicht vollständig konsumiert. Vergewissern Sie sich, dass
die konsumierende Anwendung die eingehenden Nachrichten ordnungsgemäß verarbeitet. Stellen Sie beispielsweise
sicher, dass die Anwendung die für den Konsum der Nachricht verwendete Transaktion festschreibt.
- Wenn die Anforderung den Status "Zurückgewiesen" hat, wurde eine Nachricht abgerufen und an die konsumierende Anwendung
zurückgegeben, die die Nachricht aber aus irgendeinem Grund zurückgewiesen hat.
Im Allgemeinen bedeutet dies, dass die konsumierende Anwendung die Operation oder eine zugehörige Transaktion rückgängig gemacht hat.
- Wenn die Anforderung den Status "Bestätigt" hat, wurde eine Nachricht zurückgegeben und von der Anwendung konsumiert.
Stellen Sie sicher, dass die Nachricht von der richtigen Anwendung empfangen und nicht von einer anderen Anwendung konsumiert wurde.
- Wenn die Anforderung den Status "Anforderung" hat, wurde die Nachrichtenanforderung an ME2 gesendet. Fahren Sie mit der nächsten Prüfung fort, um festzustellen, warum
keine Nachricht zurückgegeben wurde.
- Notieren Sie die Anforderungs-ID. Zeigen Sie in ME2 die Nachrichtenpunkte für
das Ziel an, und überprüfen Sie die Nachrichtenanforderungen von ME3.
Vergewissern Sie sich, dass eine Anforderung vorhanden ist, die der Anforderungs-ID in ME3 entspricht.
Falls keine passende Anforderung vorhanden ist, hat ME2 die Anforderung nicht erhalten.
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.
- Überprüfen sie den Status der Anforderung:
- Wenn die Anforderung den Status "Angefordert" hat, wurde die Anforderung zwar empfangen, aber es ist keine
passende Nachricht verfügbar.
Überprüfen Sie, ob der Anforderungsselektor der verfügbaren Nachricht am Nachrichtenpunkt entspricht.
- Wenn die Anforderung den Status "Bestätigung anstehend" hat, hat die Anforderung eine passende Nachricht gefunden und versucht, sie an
ME3 zu übertragen. 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.
Nächste Schritte
Sollten weiterhin Probleme auftreten, wenden Sie sich an einen zuständigen IBM Servicemitarbeiter.