PUBLISH Veröffentlichungsnachricht

Eine PUBLISH-Nachricht wird vom Client zur Verteilung an interessierte Subskribenten an den Broker gesendet. Jede PUBLISH-Nachricht ist einem Themennamen zugeordnet (auch als Betreff oder Kanal bezeichnet). Es handelt sich hierbei um einen hierarchischen Namespace, der die Taxonomie von Informationsquellen definiert, für die sich interessierte Subskribenten registrieren lassen können. Eine Nachricht, die zu einem bestimmten Themennamen veröffentlicht wurde, wird an verbundene Subskribenten dieses Themas gesendet.

Um die Symmetrie zu wahren, wenn ein Client ein oder mehrere Themen abonniert, werden alle Nachrichten, die für diese Themen veröffentlicht werden, vom Broker als PUBLISH-Nachricht an den Client gesendet.

Fester Header

Die nachfolgende Tabelle zeigt das Format des festen Headers.

Bit 7 6 5 4 3 2 1 0
Byte 1 Nachrichtenart (3) DUP-Argument QoS-Stufe RETAIN
  0 0 1 1 0 0 1 0
Byte 2 Verbleibende Länge
QoS-Stufe
Auf (1) setzen.
DUP-Argument
Auf (0) setzen. Das bedeutet, dass die Nachricht zum ersten Mal gesendet wird.

Bei Nachrichten mit QoS-Stufe 1 oder 2, die erneut gesendet werden, da ein Fehler aufgetreten ist, wird das DUP-Bit auf 1 gesetzt. Dies zeigt dem Broker an, dass es bei der Nachricht möglicherweise um das Duplikat einer bereits empfangenen Nachricht handelt. Die Bedeutung dieser Informationen für den Broker richtet sich nach der QoS-Stufe. Das DUP-Bit wird für Nachrichten mit QoS-Stufe 0 nicht gesetzt.

RETAIN-Argument
Auf Null setzen. Das bedeutet "nicht zurückhalten".
Feld "Verbleibende Länge"
Die Länge des variablen Headers plus der Länge der Nutzlast. Dies kann ein Mehrfachbytefeld sein.

Variabler Header

Der variable Header enthält folgende Felder:

Themenname
Eine UTF-verschlüsselte Zeichenfolge.
Nachrichten-ID
Vorhanden bei Nachrichten mit QoS-Stufe 1 und 2.

Für gewöhnlich ist die Protokollbibliothek für die Generierung der Nachrichten-ID und ihre Rückübermittlung an die veröffentlichende Anwendung, wenn möglich als Rückgabe-Handle, verantwortlich. Auf diese Weise wird das Risiko vermieden, dass mehrere Anwendungen oder Veröffentlichungs-Threads auf einem einzelnen Client ausgeführt und doppelte Nachrichten-IDs generiert werden.

Eine Nachrichten-ID darf nicht im variablen Header von Nachrichten mit QoS-Stufe 0 verwendet werden.

Die Nachrichten-ID ist eine ganze 16-Bit-Zahl ohne Vorzeichen, die sich mit jeder Nachricht üblicherweise genau um den Wert von 1 erhöht. Dies ist jedoch nicht zwingend erforderlich. Die 2 Bytes der Nachrichten-ID werden in der Reihenfolge MSB, dann LSB (Big Endian) sortiert.

Die Nachrichten-ID 0 (d. h. 0x0000) ist als ungültige Nachrichten-ID reserviert und darf nicht verwendet werden.

Die nachfolgende Tabelle zeigt ein Beispiel zu einem variablen Header für eine PUBLISH-Nachricht.

Feld Wert
Themenname: "a/b"
QoS-Stufe 1
Nachrichten-ID: 10

Die nachfolgende Tabelle zeigt das Format des variablen Headers für diesen Fall.

  Beschreibung: 7 6 5 4 3 2 1 0
Themenname
Byte 1 Länge MSB (0) 0 0 0 0 0 0 0 0
Byte 2 Länge LSB (3) 0 0 0 0 0 0 1 1
Byte 3 'a' (0x61) 0 1 1 0 0 0 0 1
Byte 4 '/' (0x2F) 0 0 1 0 1 1 1 1
Byte 5 'b' (0x62) 0 1 1 0 0 0 1 0
Nachrichten-ID
Byte 6 Nachrichten-ID MSB (0) 0 0 0 0 0 0 0 0
Byte 7 Nachrichten-ID LSB (10) 0 0 0 0 1 0 1 0

Nutzlast

Enthält die zu veröffentlichenden Daten. Inhalt und Format der Daten richten sich nach der jeweiligen Anwendung. Das Feld "Verbleibende Länge" im festen Header enthält die Länge des variablen Headers sowie die Länge der Nutzlast.

Antwort

Die Antwort auf eine PUBLISH-Nachricht hängt von der QoS-Stufe ab. Die nachfolgende Tabelle zeigt die erwarteten Antworten.

QoS-Stufe Erwartete Antwort
QoS 0 Keine
QoS 1 PUBACK
QoS 2 PUBREC

Aktionen

PUBLISH-Nachrichten können entweder von einem Subskribenten an den Broker oder vom Broker an den Subskribenten gesendet werden. Die Aktion des Empfängers beim Erhalt der Nachricht richtet sich nach der QoS-Stufe der Nachricht:

QoS 0
Nachricht für alle Interessenten zur Verfügung stellen.
QoS 1
Nachricht im persistenten Speicher protokollieren, allen Interessenten zur Verfügung stellen und dem Absender eine PUBACK-Nachricht senden.
QoS 2
Nachricht im persistenten Speicher protokollieren, Interessenten noch nicht zur Verfügung stellen und dem Absender eine PUBREC-Nachricht senden.

Wenn der Broker die Nachricht empfängt, bedeutet "Interessenten" Subskribenten des Themas der PUBLISH-Nachricht. Wenn ein Subskribent die Nachricht empfängt, bedeutet "Interessenten" die Anwendung auf dem Client, der ein oder mehrere Themen abonniert hat und auf Nachricht vom Broker wartet.

Zugehörige Konzepte
WebSphere MQ Telemetry Transport
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
ac10970_