Nachrichten mit Nachrichtenendpunkten verwalten
Sie können die Zustellung für nachrichtengesteuerte Beans (MDB, Message-driven Bean) verwalten, die als Nachrichtenendpunkte implementiert sind. Die Nachrichtenendpunkte sind Managed Beans (MBeans) für eingehende Ressourcenadapter, die mit Java™ Platform, Enterprise Edition (Java EE) Connector Architecture (JCA) Version 1.5 kompatibel sind.
Informationen zu diesem Vorgang
- Fehlgeschlagene Nachrichten erfordern weitere Verarbeitungsschritte, z. B. die erneute Zustellung an den empfangsbereiten Endpunkt oder eine Umleitung an alternative Ziele, die fehlgeschlagene Nachrichten verarbeiten. Außerdem kann ein Ressourcenadapter eine Nachricht einem Endpunkt unbegrenzt oft zustellen.
- Die Nachrichtenumleitung erfordert die Implementierung spezieller Ziele (Warteschlangen und Listener), die fehlgeschlagene Nachrichten verarbeiten, sowie die Logik für die Erkennung von Nachrichtenfehlern. Die Nachrichtenumleitung ist potenziell fehleranfällig und aufgrund ihrer Komplexität rechenintensiv.
Diese Probleme werden durch die Möglichkeit gemildert, bestimmte Nachrichtenendpunkte inaktivieren (anhalten) und reaktivieren (fortsetzen) zu können. Dem Administrator kann ermöglicht werden, die Verarbeitung von Nachrichten am Endpunkt zu inaktivieren, die wahrscheinlich fehlschlagen. Wenn der Nachrichtenendpunkt inaktiviert ist, können Sie die Ressource, die ursächlich für die Probleme verantwortlich ist, reparieren. Anschließend können Sie den Endpunkt reaktivieren, damit die Behandlung der Nachrichtenanforderungen fortgesetzt wird. Der Ressourcenadapter und die Anwendung mit dem Endpunkt werden durch die Fehlerbehebung nicht beeinträchtigt.
Wenn Sie eine Verbindung zu WebSphere MQ herstellen, können Sie auch die angepasste Eigenschaft "WAS_EndpointInitialState" in der Aktivierungsspezifikation verwenden, um festzulegen, dass der Nachrichtenendpunkt beim Start den Status "Inaktiviert" hat. Wenn Sie diese Eigenschaft auf "Inactive" setzen, stellt die Message-driven Bean eine Verbindung zum Ziel her, beginnt aber nicht mit dem Empfang von Nachrichten. Verwenden Sie diese Einstellung, um einen Nachrichtenendpunkt automatisch zu inaktivieren, wenn Sie wissen, dass bestimmte Tasks ausgeführt, Services gestartet und Prüfungen durchgeführt werden müssen, bevor mit der Nachrichtenbearbeitung begonnen wird. Sie aktivieren den Nachrichtenendpunkt genauso, wie Sie einen Nachrichtenendpunkt reaktivieren würden, der während der Ausführung angehalten wurde.
Vorgehensweise
Ergebnisse
- An einem nicht permanenten Topic empfangsbereite MDB (konfigurationsabhängig): Das mit dem Inaktivieren (Anhalten) eines Nachrichtenendpunkts verbundene Verhalten ist häufig von der Funktion abhängig, die die Inaktivierung durchführt. Wenn Sie beispielsweise eine MDB als Listener an einem nicht permanenten Topic im Service Integration Bus konfiguriert haben, entspricht die Inaktivierung des Nachrichtenendpunkts dem Stoppen der Anwendung und bewirkt, dass die Subskription geschlossen wird. Das bedeutet, dass alle Nachrichten, die zu der Zeit veröffentlicht werden, in der der Nachrichtenendpunkt angehalten ist, von der MDB nicht empfangen werden.
- Cluster-MDB (topologieabhängig): In diesem Szenario ist eine MDB in einem Server-Cluster implementiert. Eine bestimmte Nachrichtenendpunkt-MBean steuert nur das Verhalten der MDB in einem Server des Clusters. Deshalb wird nur ein einziger Server für die Verarbeitung von Nachrichten gestoppt. Je nachdem, welche Messaging-Konfiguration und welcher Ressourcenadapter verwendet wird, können die Nachrichten, die eigentlich vom angehaltenen Nachrichtenendpunkt hätten konsumiert werden sollen, entweder von den aktiven Nachrichtenendpunkten im Cluster konsumiert werden, oder sie werden erst dann konsumiert, wenn der angehaltene Nachrichtenendpunkt den Betrieb wieder aufnimmt.
- Cluster-MDB ohne Clusterwarteschlange: In diesem Szenario haben Sie einen Cluster mit Servern, in denen jeweils dieselbe MDB implementiert ist. Dieses Szenario gleicht dem Szenario, in dem Sie unterschiedliche MDBs mit denselben Nachrichtenauswahlkriterien haben, abgesehen davon, dass die MDBs in diesem Szenario logisch dieselbe MDB sind. Das Anhalten eines Endpunkts bewirkt, dass nur ein einziger Server für den Empfang von Nachrichten gestoppt wird. Die anderen MDBs empfangen weiterhin alle Nachrichten. Keine Nachricht verwaist. Wenn Sie alle Endpunkte stoppen möchten, müssen Sie jeden Server im Cluster anweisen, den logischen Nachrichtenendpunkt zu stoppen.
- Cluster-MDB mit Clusterwarteschlange: In diesem Szenario extrahiert jede MDB Nachrichten aus einer anderen Partition der Warteschlange. Die Messaging-Verfahren über WebSphere MQ und den Service Integration Bus haben ähnliche, aber doch unterschiedliche Leistungseigenschaften. Wenn Sie WebSphere MQ verwenden und einen Endpunkt anhalten, können die anderen Instanzen der MDB keine Nachrichten mehr empfangen. Im Service Integration Bus werden Nachrichten eines angehaltenen Endpunkts an die anderen MDBs weitergeleitet.