Beispiel 4: MDB automatisch stoppen, wenn kein Ausnahmeziel angegeben ist
Als Vorbereitung auf die Nichtverfügbarkeit einer Systemressource oder eine Problemnachricht konfigurieren Sie das System so, dass die MDB automatisch gestoppt wird. Damit die Nachrichtenreihenfolge bewahrt wird, verwenden Sie kein Ausnahmeziel.
Vorbereitende Schritte
Das Ziel, an dem die MDB empfangsbereit ist, darf kein Ausnahmeziel verwenden, d. h., es darf keine Ausnahmeziel für das Warteschlangen- bzw. Topicbereichsziel konfiguriert sein.
- Unternehmensanwendung, die die MDB enthält
- Abhängige externe Systemressourcen
- 1 als Wert für Schwellenwert für aufeinanderfolgende Nachrichtenfehler.
Dies ist die maximal zulässige
Anzahl aufeinanderfolgender Fehler bei der Nachrichtenzustellung, nach der die MDB
gestoppt wird.
Diese Eigenschaft gilt für Nachrichtensätze.
Anmerkung: Wenn Sie diese Eigenschaft auf einen Wert größer als 1 setzen, setzt das System den Wert automatisch auf 1 zurück, wenn kein Ausnahmeziel konfiguriert ist.
- Der Wert 5000 für Verzögerung zwischen Wiederholungen fehlerhafter Nachrichten, d. h. für die Zeit in Millisekunden, nach deren Ablauf eine Nachricht, deren Zustellung fehlgeschlagen ist, wieder für die Zustellung an die MDB verfügbar ist. In dieser Zeit können weitere Nachrichten zugestellt werden, sofern Schwellenwert für aufeinanderfolgende Nachrichtenfehler und die maximale Parallelität nicht auf 1 gesetzt sind.
- Ein gültiger Wert für die Eigenschaft Maximale Anzahl fehlgeschlagener Zustellungen pro Nachricht, d. h. die maximale Anzahl fehlgeschlagener Versuche, eine Nachricht zu verarbeiten. Diese Eigenschaft gilt für einzelne Nachrichten.
Die JCA-MBean gibt JMX-Benachrichtigungen aus, um anzuzeigen, dass die Ausführung der MDB angehalten bzw. fortgesetzt wurde. Sie können einen Nachrichtenlistener in der JCA-MBean registrieren, um JMX-Benachrichtigungen zu erhalten.
Informationen zu diesem Vorgang
In diesem Szenario ist die Unternehmensanwendung ein kontinuierlich aktives System, das eine implementierte MDB verwendet, um auf eine externe Systemressource zuzugreifen.
Wenn eine Problemnachricht (msg1 in diesem Szenario) auftritt, wird sie in die Warteschlange zurückgestellt.
Anstatt msg1 der MDB sofort zur Verfügung zu stellen, wird sie für einen Zeitraum (in diesem Szenario ein Wiederholungsintervall von fünf Sekunden), der mit der Eigenschaft Verzögerung zwischen Wiederholungen fehlerhafter Nachrichten festgelegt wurde, verborgen.
Wenn die Anzahl verborgener Nachrichten den mit der Eigenschaft Schwellenwert für aufeinanderfolgende Nachrichtenfehler festgelegten Wert erreicht, verarbeitet die MDB so lange keine weiteren Nachrichten, bis eine der verborgenen Nachrichten wieder verfügbar ist. In diesem Szenario wird dieser Schwellenwert erreicht, sobald msg1 verborgen wird.
Wenn der mit Verzögerung zwischen Wiederholungen fehlerhafter Nachrichten festgelegte Zeitraum für msg1 abläuft, wird msg1 wieder sichtbar und kann erneut verarbeitet werden.
Dieser Prozess wird so oft wiederholt, bis msg1 den mit Maximale Anzahl fehlgeschlagener Zustellungen pro Nachricht festgelegten Grenzwert erreicht (fünf in diesem Szenario).
Sobald msg1 das vierte Mal nicht mehr verborgen, rückgängig gemacht und erneut verborgen wurde, ist der mit Schwellenwert für aufeinanderfolgende Nachrichtenfehler festgelegte Grenzwert erreicht und die MDB wird automatisch gestoppt. Eine JCA-MBean gibt eine JMX-Benachrichtigung aus, und der Systemadministrator wird über einen Protokolleintrag benachrichtigt, dass die MDB gestoppt wurde.