Die Befehlsnachricht zum Anmelden als Subskribent (RegSub) wird von einem Subskribenten an einen Broker oder von einer anderen Anwendung im Namen eines Subskribenten gesendet, um mitzuteilen, dass er für einen Subskriptionspunkt eine Subskription für ein oder mehrere Themen einrichten möchte. Es kann auch ein Nachrichteninhaltsfilter angegeben werden.
In Publish/Subscribe-Filterausdrücken haben verschachtelte Klammern einen Leistungsverlust zur Folge, der mit jeder Verschachtelungsebene exponentiell steigt. Vermeiden Sie deshalb Verschachtelungstiefen von mehr als sechs Ebenen.
Die Nachricht wird an die Steuerwarteschlange des Brokers, SYSTEM.BROKER.CONTROL.QUEUE, gesendet. Zusätzlich zur Zugriffsberechtigung (eingerichtet vom Systemadministrator des Brokers) für das Thema oder die Themen in der Subskription wird die Berechtigung zum Einreihen einer Nachricht in diese Warteschlange benötigt.
Wenn der Benutzer für einige, aber nicht alle Themen eine Berechtigung hat, wird er nur für die berechtigten Themen angemeldet. Eine Warnmeldung weist ihn auf die Themen hin, für die er nicht angemeldet wurde.
Ausführliche Informationen zu den Parametern des Nachrichtendeskriptors (MQMD), die beim Senden einer Befehlsnachricht an den Broker erforderlich sind, finden Sie unter Nachricht mit Brokerantwort.
Wenn es sich bei der Warteschlange um eine temporäre dynamische Warteschlange handelt, wird die Anmeldung der Subskription beim Schließen der Warteschlange durch den Broker automatisch zurückgenommen.
Diese Eigenschaft muss angegeben werden und kann bei Bedarf für beliebig viele Themen wiederholt werden.
Wird diese Eigenschaft nicht angegeben, wird der Standardsubskriptionspunkt verwendet.
Wird diese Eigenschaft nicht angegeben, findet keine Inhaltsfilterung statt.
Wenn die Angabe für eine bestehende Subskription, die der herkömmlichen ID dieses Befehls zum Anmelden als Subskribent entspricht, erfolgt, aber kein aktueller Wert für SubName angegeben ist, wird der in diesem Befehl angegebene SubName zur Subskription hinzugefügt.
Wenn AddName angegeben wird, ist eine Angabe im Feld SubName obligatorisch, andernfalls wird MQRCCF_REG_OPTIONS_ERROR zurückgegeben.
Die CorrelId (Korrelations-ID) im Nachrichtendeskriptor (MQMD) wird beim Senden entsprechender Veröffentlichungen an die Warteschlange des Subskribenten verwendet. Der Wert von CorrelId darf nicht null sein.
Wenn diese Option angegeben ist, werden bei erfolgreicher Ausführung des Befehls alle Attribute der Subskription in der Antwortnachricht zurückgegeben.
FullResp ist nur zulässig, wenn die Befehlsnachricht eine Einzelsubskription betrifft. Deshalb kann im Befehl nur ein Thema angegeben werden, andernfalls schlägt der Befehl mit dem Rückkehrcode MQRCCF_REG_OPTIONS_ERROR fehl.
Der Broker informiert den Subskribenten, ob eine Veröffentlichung als ständige Veröffentlichung gespeichert wird, wenn er eine Publish-Nachricht als Antwort auf eine Befehlsnachricht zum Anmelden als Subskribent oder Anfordern einer Aktualisierung sendet. Zu diesem Zweck fügt der Broker die Veröffentlichungsoption IsRetainedPub in die Nachricht ein.
Diese Option zeigt an, dass die angegebene SubIdentity als exklusives Mitglied des ID-Satzes für die Subskription hinzugefügt werden soll und keine anderen IDs zum ID-Satz hinzugefügt werden können.
Falls die ID bereits als 'gemeinsam genutzt' hinzugefügt wurde und der einzige Eintrag im ID-Satz ist, wird eine exklusive Sperre für den ID-Satz eingerichtet, die von dieser ID gehalten wird. Wenn im ID-Satz jedoch bereits andere IDs für die Subskription enthalten sind (für gemeinsamen Zugriff), schlägt der Befehl mit dem Rückkehrcode MQRCCF_SUBSCRIPTION_IN_USE fehl.
Diese Option gibt an, dass die angegebene SubIdentity zum ID-Satz für die Subskription hinzugefügt werden soll.
Falls die Subskription gerade exklusiv gesperrt ist (durch die Option JoinExcl), schlägt der Befehl mit dem Rückkehrcode MQRCCF_SUBSCRIPTION_LOCKED fehl, außer wenn die ID, von der die Subskription gesperrt wird, dieselbe ist wie in dieser Befehlsnachricht. In diesem Fall wird die Sperre automatisch in eine gemeinsame Sperre geändert.
Die Subskription ist lokal und wird nicht an andere Broker im Netz verteilt. Veröffentlichungen auf anderen Brokern werden nicht an diesen Subskribenten geliefert, es sei denn, er hat eine entsprechende globale Subskription eingerichtet.
Ständige Veröffentlichungen, die zum Zeitpunkt der Einrichtung der Subskription bestehen, werden nicht an den Subskribenten gesendet. Er erhält nur neue Veröffentlichungen.
Wenn ein Subskribent diese Option erneut angibt und ändert, so dass sie nicht mehr gesetzt ist, werden bereits gesendete Veröffentlichungen möglicherweise noch einmal gesendet.
Die Attribute einer bestehenden entsprechenden Subskription werden nicht geändert.
Beim Erstellen einer Subskription wird diese Option ignoriert. Alle anderen angegebenen Optionen gelten für die neue Subskription.
Wenn für eine SubIdentity auch eine der Join-Optionen angegeben ist (JoinExcl oder JoinShared), wird die ID zum ID-Satz hinzugefügt, unabhängig davon, ob NoAlter angegeben ist oder nicht.
Alle Registrierungsoptionen erhalten ihre Standardwerte.
Wenn der Subskribent bereits angemeldet ist, werden die Optionen auf ihre Standardwerte zurückgesetzt. (Achtung: Dies hat nicht dieselbe Wirkung wie das Weglassen der Eigenschaft für Registrierungsoptionen.) Außerdem wird das Verfallsdatum der Subskription aus dem MQMD der Nachricht zum Anmelden als Subskribent aktualisiert.
Wenn gleichzeitig andere Registrierungsoptionen angegeben werden, wird None ignoriert.
Veröffentlichungen für diese Subskription werden als nicht persistente Nachrichten an den Subskribenten zugestellt.
Veröffentlichungen für diese Subskription werden als persistente Nachrichten an den Subskribenten zugestellt.
Veröffentlichungen für diese Subskription werden an den Subskribenten zugestellt, wobei die Persistenz vom Publisher festgelegt wird. Dies ist das Standardverhalten.
Veröffentlichungen für diese Subskription werden an den Subskribenten zugestellt, wobei die Persistenz in der Warteschlange des Subskribenten festgelegt wird.
Der Broker sendet keine Veröffentlichungen an den Subskribenten, außer als Antwort auf eine Befehlsnachricht zum Anfordern einer Aktualisierung.
Bei Angabe dieser Option ist die ID des Subskribenten (Warteschlange, WS-Manager und Korrelations-ID) nicht auf eine einzige Benutzer-ID begrenzt. In diesem Punkt gibt es einen Unterschied zum bestehenden Verhalten des Brokers, der die Benutzer-ID der ursprünglichen Registrierungsnachricht der ID des Subskribenten zuordnet und dann verhindert, dass ein anderer Benutzer diese ID verwendet. Wenn ein neuer Subskribent versucht, dieselbe ID zu verwenden, wird der Rückkehrcode MQRCCF_DUPLICATE_SUBSCRIPTION zurückgegeben.
Auf diese Weise kann jeder Benutzer, der über eine entsprechende Berechtigung verfügt, die Subskription ändern oder beenden. Deshalb muss nicht überprüft werden, ob die Benutzer-ID mit der des ursprünglichen Subskribenten übereinstimmt.
Um diese Option zu einer bestehenden Subskription hinzuzufügen, muss der Befehl von derselben Benutzer-ID wie die der ursprünglichen Subskription ausgegeben werden.
Wenn für die Subskription im Befehl zum Anfordern einer Aktualisierung die Option VariableUserId angegeben wird, muss dies zum Zeitpunkt der Aktualisierungsanforderung geschehen, um anzuzeigen, um welche Subskription es sich handelt. Andernfalls wird die Subskription anhand der Benutzer-ID des Befehls zum Anfordern einer Aktualisierung identifiziert. Diese wird ebenso wie die anderen Subskribenten-IDs überschrieben, wenn ein Subskriptionsname angegeben wird.
Wenn sich ein Befehl zum Anmelden als Subskribent, in dem diese Option nicht angegeben ist, auf eine bestehende Subskription bezieht, in der diese Option angegeben ist, wird die Option aus dieser Subskription entfernt. Damit ist die Benutzer-ID der Subskription festgelegt. Wenn es bereits einen Subskribenten mit derselben ID gibt (Warteschlange, WS-Manager und Korrelations-ID), aber mit einer anderen Benutzer-ID, schlägt der Befehl mit dem Rückkehrcode MQRCCF_DUPLICATE_IDENTITY fehl, weil der ID eines Subskribenten nur eine Benutzer-ID zugeordnet werden kann.
Wenn die Eigenschaft für Registrierungsoptionen weggelassen wird und der Subskribent bereits angemeldet ist, werden seine Registrierungsoptionen nicht geändert, und das Verfallsdatum der Subskription wird aus dem MQMD des Befehls zum Anmelden als Subskribent aktualisiert.
Falls der Subskribent noch nicht angemeldet ist, wird eine neue Subskription erstellt, wobei alle Registrierungsoptionen ihre Standardwerte erhalten.
Die Standardwerte sind: PersAsPub ist gesetzt und alle anderen Optionen nicht.
Wird diese Eigenschaft nicht angegeben, wird standardmäßig der im Feld ReplyToQMgr des Nachrichtendeskriptors (MQMD) angegebene Name verwendet. Wenn der Name aus Leerzeichen besteht, wird standardmäßig der Name des Warteschlangenmanagers des Brokers verwendet.
Wird diese Eigenschaft nicht angegeben, wird standardmäßig der im Feld ReplyToQ des Nachrichtendeskriptors (MQMD) angegebene Name, der in diesem Fall nicht aus Leerzeichen bestehen darf, verwendet.
Wenn es sich bei der Warteschlange um eine temporäre dynamische Warteschlange handelt, muss in der Eigenschaft <RegOpt> die nicht persistente Zustellung von Veröffentlichungen (NonPers) angegeben werden.
Wenn es sich bei der Warteschlange um eine temporäre dynamische Warteschlange handelt, wird die Anmeldung der Subskription beim Schließen der Warteschlange durch den Broker automatisch zurückgenommen.
Falls bereits eine Subskription mit diesem SubName vorhanden ist, werden alle anderen Attribute der Subskription (Topic, QMgrName, QName, CorrelId, UserId, RegOpts, UserSubData und Expiry) mit den Attributen (falls angegeben) überschrieben, die in der neuen Befehlsnachricht zum Anmelden als Subskribent übergeben werden. Wenn SubName jedoch ohne Angabe des Feldes QName verwendet wird und im MQMD-Header das Feld ReplyToQ angegeben ist, wird als Warteschlange des Subskribenten die im Feld ReplyToQ angegebene Warteschlange verwendet.
Wenn bereits eine Subskription vorhanden ist, die mit der traditionellen ID dieses Befehls übereinstimmt, aber kein SubName angegeben ist, schlägt der Registrierungsbefehl mit dem Rückkehrcode MQRCCF_DUPLICATE_SUBSCRIPTION fehl, es sei denn, die Option AddName ist angegeben.
Wenn bei dem Versuch, eine bestehende benannte Subskription mit Hilfe eines weiteren Befehls zum Anmelden als Subskribent, in dem derselbe SubName angegeben ist, zu ändern und wenn die Werte von Topic, QMgrName, QName und CorrelId in dem neuen Befehl mit denen einer anderen bestehenden Subskription übereinstimmen (ob mit oder ohne definierten SubName), schlägt der Befehl mit dem Rückkehrcode MQRCCF_DUPLICATE_SUBSCRIPTION fehl. Dadurch wird verhindert, dass zwei Subskriptionsnamen auf dieselbe Subskription verweisen.
Mit einem Subskriptionsbefehl, in dem die Option JoinShared oder JoinExcl angegeben ist, wird die SubIdentity zum ID-Satz der Subskription hinzugefügt, falls sie dort noch nicht enthalten ist und der vorhandene ID-Satz eine solche Aktion zulässt, d. h., kein anderer Subskribent hat eine exklusive Verknüpfung (JoinExcl) vorgenommen, oder der ID-Satz ist leer.
Die Attribute der Subskription können nur dann erfolgreich mit einem Befehl zum Anmelden als Subskribent, in dem eine SubIdentity angegeben ist, geändert werden, wenn es sich dabei um das einzige Mitglied des ID-Satzes für diese Subskription handelt. Andernfalls schlägt der Befehl mit dem Rückkehrcode MQRCCF_SUBSCRIPTION_IN_USE fehl. Dadurch wird verhindert, dass die Attribute einer Subskription geändert werden, ohne dass andere interessierte Subskribenten darüber informiert werden.
Bei Angabe einer Zeichenfolge mit mehr als 64 Zeichen schlägt der Befehl mit dem Rückkehrcode MQRCCF_SUB_IDENTITY_ERROR fehl.
Falls vorhanden, werden die SubUserData in der Metathema-Information (MQCACF_REG_SUB_USER_DATA) für eine Subskription zurückgegeben.
Wenn Sie mehrere der Werte NonPers, PersAsPub, PersAsQueue und Pers für die Registrierungsoption angeben, wird nur der letzte verwendet. Sie können diese Optionen in einer Einzelsubskription nicht kombinieren.
<psc> <Command>RegSub</Command> <RegOpt>PubOnReqOnly</RegOpt> <RegOpt>CorrelAsId</RegOpt> <Topic>Sport/Soccer/State/LatestScore/#</Topic> </psc>