So stellen nachrichtengesteuerte Beans eine Verbindung in einem Cluster her

Wenn eine EJB-Anwendung in einem Anwendungs-Server-Cluster implementiert ist, kann die Anwendung auf jedem Server im Cluster ausgeführt werden, um so die hohe Verfügbarkeit und Skalierbarkeit der Anwendung zu gewährleisten. Wenn die EJB-Anwendung eine nachrichtengesteuerte Bean (MDB, Message-Driven Bean) ist, kann sie auf jedem der Server im Cluster (für die hohe Verfügbarkeit) ausgeführt und gleichzeitig in mehreren Anwendungsservern im Cluster aufgerufen werden (für die Skalierbarkeit). Dieses Verhalten richtet sich nach der Position der MDB in Hinblick auf die einzelnen SIB-Member und nach der Konfiguration der MDB selbst.

Anmerkung: Für den Verwaltungskomfort verbinden Sie die MDB mit den Messaging-Engines in dem Busmember, das Eigner der Buswarteschlange oder Subskription ist, die von der MDB bedient wird, anstatt für die Verbindung temporäre Messaging-Engines zu verwenden. Für eine optimale Messaging-Leistung implementieren Sie die MDB in demselben Anwendungsserver oder Cluster, in dem sich auch das Busmember befindet.

Wenn eine MDB-Anwendung in einem Anwendungs-Server-Cluster implementiert wird, der auch ein Busmember des Typs "SIB-Cluster" ist, stellt die MDB-Anwendung standardmäßig eine Verbindung zu einer oder mehreren Messaging-Engines auf Servern im Cluster her. Das Standardverhalten für die Verbindungsherstellung und die zusätzlichen Steuerelemente für die Verbindungsherstellung, die Sie auf jede JMS-Anwendung, einschließlich MDBs, anwenden können, sind im Artikel So stellen JMS-Anwendungen eine Verbindung zu einer Messaging-Engine in einem Bus her beschrieben. Wenn Sie diese Konfigurationsoptionen verwenden, wird die nachrichtengesteuerte Bean jedoch nur in den Servern im Cluster ausgeführt, die eine gestartete Messaging-Engine enthalten.

Für MDB-Anwendungen, die eine Verbindung zu einem Busmember des Typs "Cluster" herstellen, können Sie auch die folgenden zusätzlichen Konfigurationen aktivieren:
  • Alle Server im Cluster können Nachrichten von der MDB-Anwendung empfangen, um die vollständige Verarbeitungsleistung im Cluster zu nutzen.
  • Es kann nur jeweils ein Server Nachrichten von der MDB-Anwendung empfangen, sodass eine sequenzielle Verarbeitung der Nachrichten gewährleistet wird.
Für die Abbildungen in diesen Abschnitten gelten die folgenden Konventionen:
Abbildung 1. Legende für Topicdiagramme
Diese Abbildung ist eine Legende, die für die folgenden Diagramme relevant ist.

MDB-Verbindungsverhalten: in einem Busmember des Typs "Cluster"

Die nachrichtengesteuerte Bean wird nur in den Servern im Cluster unterstützt, die eine gestartete Messaging-Engine enthalten.

Dies ist die Standardoption. Wenn die MDB in einem Busmember des Typs "Cluster" implementiert wird, kommen nur die MDB-Endpunkte in Servern mit einer gestarteten Messaging-Engine für die Steuerung über verfügbare Nachrichten in Frage.

In Abbildung 2 enthält ein Busmember des Typs "Cluster" drei Server. Die Server server1 und server2 enthalten jeweils eine Messaging-Engine. Die MDB-Endpunkte, die in diesen beiden Servern ausgeführt werden, stellen jeweils eine Verbindung zu den ihnen zugehörigen lokalen Messaging-Engines her. Der Server server3 enthält keine gestartete Messaging-Engine, aber zwei Failover-Messaging-Engines. Er hat keinen aktiven MDB-Endpunkt und kann für den Konsum von Nachrichten nicht ausgewählt werden.

Abbildung 2. Die MDB wird in den Servern im Cluster unterstützt, die eine gestartete Messaging-Engine enthalten (Setup 1).
Diese Abbildung wird im Begleittext beschrieben.

Diese Konfiguration unterstützt außerdem eine hohe Verfügbarkeit der MDB-Anwendung und der Nachrichten am Busziel, wenn die Messaging-Engines von jeweils anderen Servern im Cluster übernommen werden können.

In Abbildung 3 sehen Sie dasselbe Busmember (Cluster) wie in der vorherigen Abbildung. Die Messaging-Engine in server1 wurde von server2 übernommen. Deshalb enthält server2 jetzt zwei aktive Messaging-Engines, und der MDB-Endpunkt, der in server2 ausgeführt wird, ist jetzt mit beiden lokalen Messaging-Engines verbunden. Der dritte Server enthält keine gestartete Messaging-Engine und hat keinen aktiven MDB-Endpunkt und kommt nicht für den Konsum von Nachrichten in Frage.

Abbildung 3. Die MDB wird in den Servern im Cluster unterstützt, die eine gestartete Messaging-Engine enthalten (Setup 2).
Diese Abbildung wird im Begleittext beschrieben.

Diese Konfiguration wird aktiviert, sofern Sie in der Aktivierungsspezifikation nicht die Option Immer alle MDBs in allen Servern aktivieren ausgewählt haben.

Alle Server in einem Busmember des Typs "Cluster" können Nachrichten von einer MDB empfangen

Unabhängig davon, ob eine lokale gestartete Messaging-Engine vorhanden ist, können Sie die MDB-Endpunkte in allen Clusterservern so konfigurieren, dass sie über Nachrichten angesteuert werden. Jeder MDB-Endpunkt auf einem Server, der keine gestartete Messaging-Engine besitzt, ist direkt mit einer der Messaging-Engines auf einem der anderen Server im Cluster verbunden. Dieser Ansatz gewährleistet, dass alle verfügbaren Ressourcen des Clusters für die Verarbeitung der Nachrichten, die an die Ziele gesendet werden, verwendet werden können.

In Abbildung 4 enthält ein Busmember des Typs "Cluster" drei Server. Zwei Server enthalten aktive Messaging-Engines. Die MDB-Endpunkte in diesen beiden Servern stellen jeweils eine Verbindung zu den ihnen zugehörigen lokalen Messaging-Engines her. Die Arbeitslast des dritten Servers, der keine gestartete Messaging-Engine enthält, wird auf die verfügbaren Messaging-Engines im Cluster verteilt, d. h., der MDB-Endpunkt auf dem dritten Server wird mit einer Messaging-Engine verbunden, die in einem der beiden anderen Server ausgeführt wird.

Abbildung 4. Server im Busmember des Typs "Cluster" empfangen Nachrichten von einer Message-driven Bean
Diese Abbildung wird im Begleittext beschrieben.

Zur Auswahl dieser Konfiguration wählen Sie in der Aktivierungsspezifikation die Option Immer alle MDBs in allen Servern aktivieren aus.

Anmerkung: Diese Konfiguration hat in Bezug auf die Steuerung der MDB-Endpunkte denselben Effekt wie die folgende Konfiguration, die auch im Artikel Alle Server in einem Cluster können Nachrichten von Messaging-Engines in einem Busmember des Typs "Cluster" empfangen beschrieben ist.

MDB-Verbindungsverhalten: zwischen einem Cluster und einem separaten Busmember

Alle Server in einem Cluster können Nachrichten von Messaging-Engines in einem Busmember des Typs "Cluster" empfangen.

Wenn Sie die MDB-Anwendung in einem Cluster implementieren, der kein Busmember ist, versucht die MDB, unter Anwendung der im Abschnitt So stellen JMS-Anwendungen eine Verbindung zu einer Messaging-Engine in einem Bus her beschriebenen Verbindungsregeln von jedem Anwendungsserver im Cluster aus eine Verbindung zum Bus herzustellen. Dies führt gewöhnlich dazu, dass alle MDB-Endpunkte im Cluster gleichzeitig über Nachrichten einer aktiven Messaging-Engine im Busmember angesteuert werden. Dieser Ansatz gewährleistet, dass alle verfügbaren Ressourcen des Clusters für die Verarbeitung der Nachrichten, die an Ziele im Busmember des Typs "Cluster" gesendet werden, verwendet werden können.

In Abbildung 5 enthält ein Cluster drei Server mit jeweils einem MDB-Endpunkt. Ein Busmember des Typs "Cluster" enthält zwei Server, und ein Server enthält eine aktive Messaging-Engine. Jeder der drei MDB-Endpunkte des Clusters ist mit der aktiven Messaging-Engine im Busmember des Typs "Cluster" verbunden.

Anmerkung: In dieser Konfiguration können möglicherweise nicht zu allen Messaging-Engines Verbindungen hergestellt werden. Es kann also eine Messaging-Engine geben, die keine Verbindung hat, was dazu führen kann, dass bestimmte Nachrichten nicht zugestellt werden können. Die Wahrscheinlichkeit einer solchen Situation ist geringer, wenn die Aktivierungsspezifikation, die von der MDB verwendet wird, auf Serverebene definiert ist.
Abbildung 5. Alle Server im Cluster können Nachrichten von Messaging-Engines in einem Busmember des Typs "Cluster" empfangen.
Diese Abbildung wird im Begleittext beschrieben.
Anmerkung: Diese Konfiguration hat in Bezug auf die Steuerung der MDB-Endpunkte denselben Effekt wie die folgende Konfiguration, die auch im Artikel Alle Server in einem Busmember des Typs "Cluster" können Nachrichten von einer Message-driven Bean empfangen beschrieben ist.
Nur ein Server in einem Cluster kann Nachrichten von einer Messaging-Engine in einem Busmember des Typs "Cluster" empfangen.

Um die sequenzielle Verarbeitung der Nachrichten dieser MDB am Ziel durch jeweils einen einzigen Server sicherzustellen, können Sie das System so konfigurieren, dass jeweils nur ein einziger MDB-Endpunkt von Nachrichten angesteuert wird. In diesem Beispiel befinden sich die anderen MDB-Endpunkte und die Messaging-Engine im Bereitschaftsmodus, um die Verarbeitung von Nachrichten übernehmen zu können, falls server1 gestoppt wird.

In Abbildung 6 enthält ein Cluster drei Server mit jeweils einem MDB-Endpunkt. Außerdem wird ein Busmember des Typs "Cluster" gezeigt, der zwei Server enthält, die beide eine aktive Messaging-Engine haben. Nur einer der drei MDB-Endpunkte im Cluster ist mit einer aktiven Messaging-Engine im Busmember des Typs Cluster verbunden.

Abbildung 6. Ein Server, der Nachrichten von einer Messaging-Engine in einem Busmember des Typs "Cluster" empfängt
Diese Abbildung wird im Begleittext beschrieben.

Wenn Sie diese Konfiguration auswählen möchten, konfigurieren Sie die Aktivierungsspezifikation so, dass die MDB-Endpunkte in allen Cluster-Servern, die nicht zum Bus gehören, über Nachrichten von einer Messaging-Engine im Cluster (Busmember) gesteuert werden können. Setzen Sie außerdem die Option Exklusiver Empfang für das Ziel im Cluster. Wenn einer der MDB-Endpunkte eine Verbindung zur Messaging-Engine herstellt, hindert die Engine alle anderen verfügbaren MDB-Endpunkte daran, eine Verbindung herzustellen, und fährt fort, Nachrichten über denselben MDB-Endpunkt zu verarbeiten.

Um die sequenzielle Verarbeitung der Nachrichten durch eine MDB sicherzustellen, kann eine weitergehende Konfiguration erforderlich sein. Weitere Informationen dazu, wie Sie die sequenzielle Verarbeitung der Nachrichten an einem Ziel sicherstellen, finden Sie im Abschnitt Nachrichtenreihenfolge.


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