Um Shashis Antwort hinzuzufügen, benötigen Sie einen Netzwerksprung zwischen Sender und Empfänger von Nachrichten, um das WMQ-Clustering optimal zu nutzen. Beim WMQ-Clustering geht es darum, wie QMgrs untereinander kommunizieren. Es hat nichts damit zu tun, wie Client-Apps mit QMgrs kommunizieren und keine Nachrichten replizieren. Wenn in einem Cluster eine Nachricht von einem QMgr zu einem anderen gesendet werden muss, ermittelt der Cluster, wohin er ihn leiten soll. Wenn mehrere Cluster-Instanzen einer einzelnen Zielwarteschlange vorhanden sind, kann die Nachricht an einen von ihnen weitergeleitet werden. Wenn kein Netzwerksprung zwischen Sendern und Empfängern stattfindet, müssen Nachrichten das lokale QMgr nicht verlassen und daher wird das WMQ-Clustering-Verhalten nie aufgerufen, obwohl die beteiligten QMgrs am Cluster teilnehmen können.
In einer herkömmlichen WMQ-Clusterarchitektur hören alle Empfänger mehrere Instanzen der gleichen Warteschlange mit demselben Namen ab, die auf mehrere QMgrs verteilt sind. Die Absender haben einen oder mehrere QMgrs, wo sie Verbindungen herstellen und Anfragen senden können (fire-and-forget) und möglicherweise auf Antworten warten (Anfrage-Antwort). Da die Empfänger der Nachrichten einen Dienst bereitstellen, rufe ich ihre QMgrs "Dienstanbieter QMgrs" auf. Die QMgrs, in denen die Absender von Nachrichten leben, sind "Service Consumer" QMgrs, weil diese Apps Diensteabonnenten sind.
Die folgende Folie stammt aus einer Präsentation, die ich bei WMQ Architecture Consulting-Engagements verwende.
![An SOA architecture for WebSphere MQ](https://i.stack.imgur.com/nElEW.png)
Hinweis, dass die Verbraucher von Dienstleistungen - die Anfragenachrichten zu senden Dinge - Failover. Dinge, die auf Serviceendpunktwarteschlangen hören und Dienste bereitstellen, führen kein Failover durch. Dies liegt daran, dass sichergestellt werden muss, dass jede aktive Dienstendpunktwarteschlange immer bedient wird. In der Regel enthält jede Anwendungsinstanz ein Eingabehandle für zwei oder mehr Warteschlangeninstanzen. Auf diese Weise kann ein QMgr untergehen und alle App-Instanzen bleiben aktiv. Wenn eine App-Instanz ausfällt, wird eine andere App-Instanz weiterhin ihre Warteschlangen bereitstellen. Diese Affinität von Dienstanbietern zu bestimmten QMgrs ermöglicht, falls erforderlich, XA-Transaktionalität.
Der beste Weg, die ich gefunden habe WMQ HA zu erklären, ist eine Folie aus der Konferenz IMPACT:
![WebSphere MQ High Availability Options](https://i.stack.imgur.com/a769w.png)
Ein WebSphere MQ-Cluster stellt sicher, dass ein Dienst zur Verfügung steht, auch wenn eine Instanz eines gruppierten Die Warteschlange ist möglicherweise nicht verfügbar. Neue Nachrichten im Cluster werden an die verbleibenden Warteschlangeninstanzen weitergeleitet. Ein Hardware-Cluster oder Multi-Instanz-QMgr (MIQM) bietet Zugriff auf vorhandene Nachrichten. Wenn eine Seite des aktiven/passiven Paares ausfällt, gibt es einen kurzen Ausfall auf dem QMgr nur, während der Failover auftritt, dann übernimmt der sekundäre Knoten und macht alle Nachrichten in den Warteschlangen wieder verfügbar. Ein Netzwerk, das sowohl WMQ-Cluster als auch Hardware-Cluster/MIQM kombiniert, bietet die höchste Verfügbarkeitsstufe.
Beachten Sie, dass in keiner dieser Konfigurationen Nachrichten über Knoten hinweg repliziert werden. Eine WMQ-Nachricht hat immer einen einzelnen physischen Speicherort. Weitere Informationen zu diesem Aspekt finden Sie unter Thoughts on Disaster Recovery.