Interoperation mit IBM MQ: Schlüsselkonzepte von IBM MQ
Wenn Sie mit den grundlegenden Konzepten von IBM MQ nicht vertraut sind, lesen Sie die Informationen zu Objekten in IBM MQ, die für die Interoperation mit WebSphere Application Server wichtig sind.
Warteschlangen und Topics
Eine Warteschlange ist eine Datenstruktur zum Speichern von Nachrichten. Anwendungsprogramme können JMS-Aufrufe oder IBM MQ-API-Aufrufe verwenden, um Nachrichten in IBM MQ-Warteschlangen zu stellen. Andere Anwendungen können die Nachrichten aus den Warteschlangen abrufen.
Ein Topic ist das Subjekt der Informationen, die in einer Publish/Subscribe-Nachricht veröffentlicht werden. Anstatt eine Nachricht in eine bestimmte Warteschlange zu stellen, können Anwendungsprogramme eine Nachricht in einem Topic veröffentlichen. Andere Anwendungen subskribieren ein bestimmtes Topic, um alle Nachrichten, die in diesem Topic veröffentlicht werden, zu erhalten.
Wenn eine Anwendung eine Nachricht in eine Warteschlange stellt, gibt es nur eine Kopie der Nachricht. Selbst wenn mehrere Anwendungen Nachrichten aus der Warteschlange abrufen können, kann nur ein Konsument alle Nachrichten empfangen. Wenn eine Anwendung jedoch eine Nachricht in einem Topic veröffentlicht, können beliebig viele Subskribenten eine Kopie der Nachricht empfangen.
Warteschlangenmanager und Gruppen mit gemeinsamer Warteschlange
Jede IBM MQ-Warteschlange ist einem Warteschlangenmanager zugeordnet, der ihr Eigner ist. Der Warteschlangenmanager ist verantwortlich dafür, die Warteschlangen, deren Eigner er ist, zu verwalten und alle Nachrichten, die sie empfängt, in die richtigen Warteschlangen zu stellen. Anwendungsprogramme stellen eine Verbindung zu einem Warteschlangenmanager her, wenn sie Nachrichten in Warteschlangen stellen möchten. Warteschlangenmanager können Nachrichten aber auch während des normalen Betriebs in Warteschlangen stellen.
Seit IBM MQ Version 7 ist jedes Topic in IBM MQ ebenfalls einem Warteschlangenmanager zugeordnet, der sein Eigner ist. Der Warteschlangenmanager empfängt Nachrichten von Publishern und Subskriptionen von Subskribenten. Der Warteschlangenmanager ist verantwortlich dafür, die veröffentlichten Nachrichten an die Subskribenten weiterzuleiten, die sich für das Topic, dem die Nachrichten zugeordnet sind, registriert haben. In früheren Versionen von IBM MQ wird das Publish/Subscribe-Messaging durch einen Publish/Subscribe-Broker und nicht von Warteschlangenmanagern gesteuert.
In IBM MQ for z/OS können Sie gemeinsam genutzte Warteschlangen definieren, auf die verschiedene Warteschlangenmanager in einem Sysplex zugreifen können. Nachrichten, die in gemeinsam genutzte Warteschlangen gestellt werden, werden in Listenstrukturen in einer zSeries Coupling Facility gespeichert, und die Nachrichtendaten langer Nachrichten werden in einer gemeinsam genutzten DB2-Tabelle gespeichert.
Die Warteschlangenmanager, die auf dieselbe Gruppe gemeinsam genutzter Warteschlangen zugreifen können, bilden eine sogenannte Gruppe mit gemeinsamer Warteschlange. Jedes Member der Gruppe mit gemeinsamer Warteschlange stellt eine Verbindung zu einem DB2-System her, um auf gemeinsam genutzte Definitionen für IBM MQ-Objekte einschließlich Warteschlangen und Kanälen zuzugreifen. Jeder Warteschlangenmanager in der Gruppe kann die Nachrichten, die in einer gemeinsam genutzte Warteschlange gehalten werden, abrufen. Daher kann eine Anwendung, die auf eine der gemeinsam genutzten Warteschlangen zugreifen möchte, eine Verbindung zu einem beliebigen Warteschlangenmanager in der Gruppe mit gemeinsamer Warteschlange herstellen, damit die Anwendung nicht von der Verfügbarkeit eines bestimmten Warteschlangenmanagers abhängig ist.
Lokale Warteschlangen, ferne Warteschlangen und Cluster
In einem IBM MQ-Netz wird die übergreifende Kommunikation erreicht, indem Nachrichten von einem Warteschlangenmanager bzw. einer Gruppe mit gemeinsamer Warteschlange (bei IBM MQ for z/OS) an einen anderen bzw. an eine andere gesendet werden.
IBM MQ-Anwendungsprogramme können Nachrichten an eine lokale Warteschlange senden, d. h. an eine Warteschlange in dem Warteschlangenmanager, mit dem die Anwendung verbunden ist. Ein Warteschlangenmanager hat für jede seiner Warteschlangen eine Definition. Ein Warteschlangenmanager kann auch Definitionen für die Warteschlangen anderer Warteschlangenmanager haben. Aus der Perspektive des lokalen Warteschlangenmanagers betrachtet, mit dem die Anwendung verbunden ist, sind diese anderen Warteschlangen ferne Warteschlangen, und die Warteschlangenmanager, die ihre Eigner sind, sind ferne Warteschlangenmanager.
IBM MQ-Anwendungsprogramme, die mit einem lokalen Warteschlangenmanager verbunden sind, können Nachrichten auch in ferne Warteschlangen stellen. IBM MQ muss die Nachrichten dann an die fernen Warteschlangenmanager übertragen, die Eigner der fernen Warteschlangen sind. Wenn Nachrichten für eine IBM MQ-Warteschlange in einem fernen Warteschlangenmanager bestimmt sind, hält der lokale Warteschlangenmanager sie so lange in einer Übertragungswarteschlange, bis er bereit ist, sie an den fernen Warteschlangenmanager weiterzuleiten. Eine Übertragungswarteschlange ist eine spezielle Art von lokaler Warteschlange, in der Nachrichten so lange gespeichert werden, bis sie ordnungsgemäß übertragen und im fernen Warteschlangenmanager gespeichert werden können.
IBM MQ-Warteschlangenmanager können verbunden werden, um einen Cluster zu bilden. Sie können dazu alle Kommunikationsprotokolle verwenden, die auf Ihrer IBM MQ-Plattform verfügbar sind. Wenn Sie Warteschlangenmanager zu einem Cluster zusammenfassen, werden die Warteschlangen weiterhin von den einzelnen Warteschlangenmanagern bereitgestellt (d. h., sie sind keine gemeinsam genutzten Warteschlangen). Warteschlangenmanager können jedoch, indem sie eine Verbindung zum Cluster herstellen, eine Nachricht an jeden anderen Warteschlangenmanager im Cluster senden und einige oder alle darin befindlichen Warteschlangen als Clusterwarteschlangen für alle anderen Warteschlangenmanager im Cluster verfügbar machen. Es ist nicht erforderlich, in jedem Warteschlangenmanager für jede ferne Warteschlange und für die Verbindung zu jedem fernen Warteschlangenmanager explizite Definitionen zu definieren. Jeder Warteschlangenmanager im Cluster verwendet auch eine einzelne Clusterübertragungswarteschlange, in der Nachrichten für alle anderen Warteschlangenmanager gehalten werden, damit Sie nicht für jeden fernen Warteschlangenmanager eine Übertragungswarteschlange definieren müssen.
Ab IBM MQ Version 7 können Sie auch IBM MQ-Warteschlangenmanager, die Eigner von Topics für Publish/Subscribe-Messaging sind, miteinander verbinden. Sie können Warteschlangenmanager, die Eigner von Topics sind, in einem Publish/Subscribe-Cluster zusammenfassen. Die Member können miteinander verknüpft sein oder in einer Publish/Subscribe-Hierarchie mit Eltern-Kind-Beziehungen zwischen den miteinander verbundenen Warteschlangenmanagern angeordnet werden. Veröffentlichungen und Subskriptionen für Topics können von Warteschlangenmanagern im Cluster oder in der Hierarchie gemeinsam genutzt werden.
Nachrichtenkanäle
IBM MQ-Nachrichten werden, unabhängig davon, ob sie in Warteschlangen gestellt oder in Topics veröffentlicht werden, über Nachrichtenkanäle zwischen Warteschlangenmanagern übertragen. Ein Nachrichtenkanal ist eine unidirektionale Übertragungsverbindung zwischen zwei Warteschlangenmanagern. Er kann Nachrichten, die für eine beliebige Anzahl von Warteschlangen oder Topics in der fernen Warteschlange bestimmt sind, enthalten.
- Sender-Empfänger-Kanal
- Requester-Server-Kanal
- Requester-Sender-Kanal
- Server-Empfänger-Kanal
- Cluster-Sender-Kanal
- Cluster-Empfänger-Kanal
Wenn Sie z. B. den Nachrichtenkanaltyp "Sender-Empfänger-Kanal" definieren möchten, definieren Sie einen Senderkanal auf der Senderseite, z. B. im lokalen Warteschlangenmanager. Verwenden Sie anschließend denselben Namen, um einen Empfängerkanal auf Empfängerseite zu definieren, z. B. im fernen Warteschlangenmanager. Der Nachrichtenkanal ist unidirektional. Damit Nachrichten in beide Richtungen übertragen werden können, definieren Sie einen zweiten Kanal in entgegengesetzter Richtung zwischen den Warteschlangenmanagern.
Bei Warteschlangenmanagern in einem Cluster ist es nicht erforderlich, Nachrichtenkanäle zwischen jedem Warteschlangenmanagerpaar zu definieren. Stattdessen müssen Sie zwei Nachrichtenkanäle definieren, um jeden Warteschlangenmanager mit dem Cluster zu verbinden: einen Clusterempfängerkanal für das Empfangen von Nachrichten und einen Clustersenderkanal, mit dem der Warteschlangenmanager sich selbst einführt und Informationen zum Cluster erhält. Der Warteschlangenmanager kann dann eine Nachricht an einen anderen Warteschlangenmanager im Cluster senden.
Verwechseln Sie nicht Nachrichtenkanäle und MQI-Kanäle. MQI ist das Message Queue Interface in IBM MQ, das Anwendungen nutzen, um mit Warteschlangenmanagern zu interagieren. Ein MQI-Kanal ist ein Verbindungstyp, der von der IBM MQ-Clientanwendung verwendet wird, um eine Verbindung zu einem Warteschlangenmanager auf einem anderen System herzustellen und MQI-Aufrufe an den Warteschlangenmanager abzusetzen.