Ziele IBM MQ-Warteschlangen, -Topics und -Zielen zuordnen und umgekehrt
Sowohl Serviceintegrationsnachrichten als auch IBM MQ-Nachrichten enthalten Headerfelder und Eigenschaften. Einige dieser Headerfelder und Eigenschaften enthalten Ziele oder Zieleigenschaften, die Informationen zu Ziel- und Antwortwarteschlangen und zu Zielen in den Routing- und Reverse-Routing-Pfaden des Busses liefern. Da die Serviceintegration und IBM MQ unterschiedliche Zieldefinitionen haben, werden Zuordnungen verwendet, um die Ziele und Zieleigenschaften zu verarbeiten, wenn Nachrichten vom Serviceintegrationsformat in das IBM MQ-Format und umgekehrt konvertiert werden.
Ziele und Zieleigenschaften in einer Nachricht im IBM MQ-Format
- MQXQH RemoteQName
- MQXQH RemoteQMgrName
Diese Felder sind im Header MQXQH (IBM MQ-Übertragungswarteschlangenheader) vorhanden. Der Header MQXQH wird nur an Nachrichten angehängt, während diese zwischen IBM MQ-Warteschlangenmanagern oder zwischen IBM MQ-Warteschlangenmanagern und SIBs über einen IBM MQ-Link übertragen werden. Sendende und empfangende Anwendungen können nicht auf diese Felder zugreifen.
Das Feld RemoteQName enthält den Namen der Zielwarteschlange (IBM MQ) bzw. des Sendeziels (Serviceintegration). Das Feld RemoteQMgrName bezeichnet den Warteschlangenmanager bzw. die Gruppe mit gemeinsamer Warteschlange (IBM MQ) bzw. den Service Integration Bus (Serviceintegration) mit der Zielwarteschlange bzw. dem Ziel. Gewöhnlich enthält das Feld RemoteQMgrName den Namen des fernen Warteschlangenmanagers, der Gruppe mit gemeinsamer Warteschlange oder des Service Integration Bus, aber es kann auch einen IBM MQ-Warteschlangemanageralias oder den Namen eines virtuellen SIB-Warteschlangenmanagers enthalten. Beachten Sie bitte, dass diese Felder nicht für Topics verwendet werden.
Die Werte für RemoteQName und RemoteQMgrName können maximal 48 Zeichen lang sein und müssen den Namenseinschränkungen entsprechen, die für IBM MQ gelten.
- MQRFH2 jms.Dst (JMSDestination)
Dieses Feld ist in JMS-Nachrichten im Format IBM MQ enthalten, die den MQRFH2-Header enthält.
Das Feld jms.Dst enthält eine serialisierte Darstellung (einen IBM MQ-URI) des geplanten JMS-Ziels, das festgelegt wurde, als die Anwendung send für die Nachricht abgesetzt hat. Weitere Informationen zum IBM MQ-URI-Format für JMS-Ziele finden Sie in der IBM MQ-Bibliothek.
Wenn die Serviceintegration eine Nachricht sendet, die einen Routing-Pfad zu IBM MQ besitzt, fügt sie diesem URI ein Attribut ibmRoutingPath hinzu. Der Wert von ibmRoutingPath bezeichnet den Routing-Pfad der Serviceintegrationsnachricht. IBM MQ verwendet den Routing-Pfad zwar nicht, aber das Sendeziel könnte in einem fernen Service Integration Bus enthalten sein, der den Routing-Pfad verwenden kann.
- MQMD ReplyToQ
- MQMD ReplyToQMgr
Diese Felder sind in allen Nachrichten im IBM MQ-Format enthalten.
Wenn die sendende Anwendung eine Antwortwarteschlange angibt, enthält das Feld ReplyToQ den Namen der Antwortwarteschlange (IBM MQ) bzw. des Antwortziels (Serviceintegration), und das Feld ReplyToQMgr bezeichnet den Warteschlangenmanager bzw. die Gruppe mit gemeinsamer Warteschlange (IBM MQ) bzw. den Service Integration Bus (Serviceintegration) mit dieser Warteschlange. Gewöhnlich enthält das Feld ReplyToQMgr den Namen des Warteschlangenmanagers, der Gruppe mit gemeinsamer Warteschlange oder des Service Integration Bus, aber es kann auch einen IBM MQ-Warteschlangemanageralias oder den Namen eines virtuellen SIB-Warteschlangenmanagers enthalten. Wenn die sendende Anwendung ein Antwort-Topic angibt bzw. kein Antwortziel angibt, enthalten diese Felder Nullwerte.
Die Werte für ReplyToQ und ReplyToQMgr können maximal 48 Zeichen lang sein und müssen den Namenseinschränkungen entsprechen, die für IBM MQ gelten.
- MQRFH2 jms.Rto (JMSReplyTo)
Dieses Feld ist in JMS-Nachrichten im IBM MQ-Format vorhanden, die den Header MQRFH2 enthalten und ein Antwortziel angeben. IBM MQ-JMS-Anwendungen verwenden dieses Nachrichtenattribut gewöhnlich als Ziel für Antwortnachrichten, aber andere IBM MQ-Nachrichten, die keine JMS-Anwendungen sind, verwenden dieses Attribut normalerweise nicht. Diese Anwendungen verwenden stattdessen die MQMD-Antwortfelder.
Das Feld jms.Rto enthält eine serialisierte Darstellung (einen IBM MQ-URI) des JMS-Antwortziels, das von der sendenden JMS-Anwendung festgelegt wird. Weitere Informationen zum IBM MQ-URI-Format für JMS-Ziele finden Sie in der IBM MQ-Bibliothek.
Wenn die Serviceintegration eine Nachricht sendet, die einen Reverse-Routing-Pfad zu IBM MQ besitzt, fügt sie diesem URI ein Attribut ibmRoutingPath hinzu. Der Wert von ibmRoutingPath bezeichnet den Reverse-Routing-Pfad der Serviceintegrationsnachricht. Wenn die empfangende JMS-Anwendung eine Antwort sendet, schließt IBM MQ die Informationen zum Routing-Pfad aus dem Antwort-URI in den Ziel-URI der Antwortnachricht ein, sodass die Serviceintegration diese Informationen für die Weiterleitung der Antwortnachricht verwenden kann.
- Wenn die sendende Anwendung eine Antwortwarteschlange für eine Nachricht angibt, befindet sich diese Warteschlange gewöhnlich in dem Bus, dem Warteschlangenmanager bzw. der Gruppe mit gemeinsamer Warteschlange, zu dem bzw. der die sendende Anwendung eine Verbindung herstellt. Dies ermöglicht der sendenden Anwendung, die Antwortnachricht aus der Antwortwarteschlange zu empfangen. Serviceintegrationsanwendungen, die Nachrichten an oder über IBM MQ senden, sollten keine Antwortwarteschlange in einem anderen Bus, einem anderen Warteschlangenmanager bzw. einer anderen Gruppe mit gemeinsamer Warteschlange angeben.
- Es ist wichtig zu verstehen, dass die empfangende Anwendung das Antwortziel in einer Nachricht verwendet. Der Bus, der Warteschlangenmanager bzw. die Gruppe mit gemeinsamer Warteschlange, zu dem bzw. der die empfangende Anwendung eine Verbindung herstellt, muss mit den Informationen konfiguriert sein, die eine Weiterleitung an das Antwortziel zulässt.
Zielkonvertierung bei der Konvertierung einer Nachricht aus dem IBM MQ-Format durch die Serviceintegration
- MQXQH RemoteQName
- MQXQH RemoteQMgrName
Diese Felder sind nur gültig, wenn die Serviceintegration die Nachricht über einen IBM MQ-Link sendet und das Ziel eine Warteschlange ist.
Die Serviceintegration legt diese Felder auf der Basis der aufgelösten Zieladresse für die Nachricht fest, d. h., wenn das Ziel ein Alias ist, verwendet die Serviceintegration den Zielbus und die Ziel-ID. Die Verarbeitung ist in diesem Fall wie folgt:- Wenn das Ziel ein indirekt verbundener Bus ist, wird der Zielname (ID) für RemoteQName und der Busname für RemoteQMgrName gespeichert.
- Wenn das Ziel der direkt verbundene Bus ist und der Zielname (ID) das Format Warteschlange@Warteschlangenmanager hat, wird der Warteschlangenname (Warteschlange) für RemoteQName und der Name des Warteschlangenmanagers (Warteschlangenmanager) für RemoteQMgrName gespeichert.
- Wenn das Ziel der direkt verbundene Bus ist und der Zielname (ID) nicht das Format Warteschlange@Warteschlangenmanager hat, wird der Zielname für RemoteQName und der Busname für RemoteQMgrName gespeichert.
Wenn das Ziel ein indirekt zugeordneter Service Integration Bus ist und der Zielname nicht den Namenseinschränkungen entspricht, die für IBM MQ gelten, müssen Sie ein Aliasziel mit einem konformen Namen definieren. Die sendende Anwendung muss den konformen (Alias-)Namen verwenden. In diesem Fall müssen Sie das Aliasziel im fernen (indirekt zugeordneten) Bus und nicht im lokalen Bus definieren.
Wenn das Ziel ein indirekt zugeordneter Service Integration Bus ist und der Busname nicht den Nameneinschränkungen entspricht, die für IBM MQ gelten, muss ein virtueller Warteschlangenmanager für den indirekt zugeordneten Bus vorhanden sein. In diesem Fall der indirekt zugeordnete Bus mit dem Namen des virtuellen Warteschlangenmanagers und nicht mit dem Busnamen im lokalen Bus definiert werden.
Weitere Informationen zur Zuordnung von SIB-Namen, die den Namenskonventionen von IBM MQ nicht entsprechen, finden Sie im Artikel Adressierung von Buszielen und IBM MQ-Warteschlangen.
- MQRFH2 jms.Dst (JMSDestination)
Wenn die Nachricht im IBM MQ-Format den Header MQRFH2 enthält, serialisiert die Serviceintegration das Headerfeld JMSDestination in einen IBM MQ-URI und speichert ihn im Feld JMSDestination in der IBM MQ-Nachricht. Wenn die Nachricht einen Routing-Pfad hat, fügt die Serviceintegration diesen als Attribut ibmRoutingPath in den URI ein.
- MQMD ReplyToQ
- MQMD ReplyToQMgr
Die sendende JMS-Anwendung kann diese Felder direkt über die providerspezifischen JMS-Nachrichteneigenschaften JMS_IBM_MQMD_ReplyToQ und JMS_IBM_MQMD_ReplyToQMgr setzen. Wenn die sendende Anwendung die Felder nicht direkt setzt, legt die Serviceintegration die Eigenschaften fest, sofern die Nachricht ein Antwortziel besitzt und dieses Ziel eine Warteschlange ist.
Die Serviceintegration legt diese Felder auf der Basis der nicht aufgelösten Antwortadresse für die Nachricht fest, d. h., wenn das Antwortziel ein Alias ist, verwendet die Serviceintegration den Aliasbus und die Aliaskennung und nicht den Zielbus und die Zielkennung. Serviceintegrationsanwendungen sollten keine fremden Ziele oder Ziele, deren Namen das Zeichen @ enthalten, als Antwortziele angeben. Vorausgesetzt, dass die Anwendungen dies nicht tun, ist die Verarbeitung wie folgt:- Der Name des Antwortziels (Kennung) wird im Feld ReplyToQ und der Busname des Antwortziels (d. h. der Name des lokalen Busses) im Feld ReplyToQMgr gespeichert.
- Wenn der Name des virtuellen Warteschlangenmanagers vom Namen des lokalen Busses abweicht, wird der Name des virtuellen Warteschlangenmanagers an Stelle des Namens des lokalen Busses im Feld ReplyToQMgr gespeichert.
Wenn der echte Name der Antwort-Warteschlange nicht den Namenseinschränkungen entspricht, die für IBM MQ gelten (was auch der Fall ist, wenn der Name das Zeichen @ enthält), müssen Sie ein Aliasziel mit einem konformen Namen definieren, und die sendende Anwendung muss den konformen (Alias-)Namen verwenden. In diesem Fall müssen Sie das Aliasziel im lokalen Bus und nicht im fernen (indirekt zugeordneten) Bus definieren.
- MQRFH2 jms.Rto (JMSReplyTo)
Wenn die Nachricht ein Antwortziel hat und die Nachricht im IBM MQ-Format den Header MQRFH2 enthält, erstellt die Serviceintegration einen IBM MQ-URI, um dieses Antwortziel darzustellen, und speichert den URI in der Eigenschaft JMSReplyTo in der IBM MQ-Nachricht. Handelt es sich bei dem Antwortziel um eine Warteschlange, enthält der URI den Busnamen des Antwortziels (lokaler Bus) oder den Namen des virtuellen Warteschlangenmanagers (sofern dieser anders ist). Wenn die Nachricht einen Reverse-Routing-Pfad besitzt, fügt die Serviceintegration diesen Pfad in den URI in das Attribut ibmRoutingPath ein.
Zielkonvertierung bei der Konvertierung einer Nachricht aus dem IBM MQ-Format durch die Serviceintegration
- MQXQH RemoteQName
- MQXQH RemoteQMgrName
Diese Felder sind nur gültig, wenn die Serviceintegration die Nachricht über einen IBM MQ-Link empfängt und das Ziel eine Warteschlange ist.
Die Serviceintegration interpretiert das Feld RemoteQName als Zielkennung (immer eine Warteschlange) für die Nachricht und das Feld RemoteQMgrName als den Namen des Zielbusses für die Nachricht. Wenn das Feld RemoteQMgrName den Namen des virtuellen Warteschlangenmanagers des lokalen Busses enthält, interpretiert die Serviceintegration ihn als Namen des lokalen Busses. Anschließend verwendet die Serviceintegration die sich daraus ergebende Kombination von Bus und Zielkennung (die ein Aliasziel im lokalen Bus sein kann), um die Nachricht wie gewöhnlich zuzustellen. In den Fällen, in denen der Zielbus ein fremder Bus ist, beinhaltet dieser Vorgang auch die Weiterleitung der Nachricht an diesen fremden Bus.
- MQRFH2 jms.Dst (JMSDestination)
Wenn dieses Feld verfügbar ist, verwendet die Serviceintegration das Feld, um das Headerfeld JMSDestination für die Nachricht zu erstellen. Enthält der URI das Attribut ibmRoutingPath, verwendet die Serviceintegration dieses Attribut, um den Routing-Pfad für die Nachricht zu erstellen.
Wenn diese Eigenschaft nicht verfügbar ist (z. B., wenn die IBM MQ-Nachricht keinen Header MQRFH2 enthält), kann die Serviceintegration ein Headerfeld JMSDestination aus dem Serviceintegrationsziel erstellen, dem die Nachricht zugestellt wird.
- MQMD ReplyToQ
- MQMD ReplyToQMgr
- Wenn diese Felder Werte ungleich null enthalten, verwendet die Serviceintegration sie folgendermaßen, um das erste Element des Reverse-Routing-Pfads für die Serviceintegrationsnachricht zu erstellen:
- Wenn ReplyToQMgr der Name des lokalen Busses oder der Name des virtuellen Warteschlangenmanagers ist, setzt die Serviceintegration den Bus auf den lokalen Bus und den Zielnamen (Kennung) auf ReplyToQ.
- Wenn ReplyToQMgr ein im lokalen Bus definierter fremder Bus ist, setzt die Serviceintegration den Bus auf ReplyToQMgr und den Zielnamen (Kennung) auf ReplyToQ.
- Wenn ReplyToQMgr nicht der Name des lokalen Busses, der Name des virtuellen Warteschlangenmanagers oder der Name eines im lokalen Bus definierten fremden Busses ist, setzt die Serviceintegration den Bus auf den direkt zugeordneten IBM MQ-Bus und den Zielnamen (Kennung) auf Warteschlange@Warteschlangenmanager, wobei Warteschlange gleich ReplyToQ und Warteschlangenmanager gleich ReplyToQMgr ist.
- MQRFH2 jms.Rto (JMSReplyTo)
Wenn dieses Feld verfügbar ist, verwendet die Serviceintegration es zusammen mit den MQMD-Feldern ReplyToQ und ReplyToQMgr, um den Reverse-Routing-Pfad und das Headerfeld JMSReplyTo für die Serviceintegrationsnachricht zu erstellen. Sie erstellt den Reverse-Routing-Pfad aus dem ersten Element (das sie aus den MQMD-Feldern ReplyToQ und ReplyToQMgr bildet) und allen verbleibenden Feldern, die sie aus dem Attribut ibmRoutingPath (sofern vorhanden) des JMSReplyTo-URI in der IBM MQ-Nachricht abruft. Sie erstellt das Headerfeld JMSReplyTo aus dem ersten Element des Reverse-Routing-Pfads und zusammen mit den Zielattributen des JMSReplyTo-URI in der IBM MQ-Nachricht.