Themen können Schemas verwenden, um ein Format zu definieren, dem ihre Nachrichten folgen müssen. Wenn Sie ein Thema mit einem Schema abonnieren, sind die an den Abonnenten gesendeten Nachrichten garantiert gültige Nachrichten. Diese Nachrichten entsprechen dem Typ und der Codierung, die in den mit dem Thema verknüpften Schemaeinstellungen angegeben sind.
Der Abonnent kann die mit einem Thema verknüpften Schemaeinstellungen bestimmen, indem er sich die folgenden Attribute ansieht:
googclient_schemaname
: Den Namen des Schemas, das für die Validierung verwendet wird. Wenn das Schema gelöscht wurde, lautet der Name_deleted-schema_
.googclient_schemaencoding
: die Codierung der Nachricht, entweder JSON oder BINARY.googclient_schemarevisionid
: Die Revisions-ID des Schemas, das zum Parsen und Validieren der Nachricht verwendet wurde. Jeder Überarbeitung ist eine eindeutige Überarbeitungs-ID zugeordnet. Die Überarbeitungs-ID ist eine automatisch generierte achtstellige UUID. Wenn die Überarbeitung gelöscht wird, lautet die ID_deleted-schema-revision_
.
Weitere Informationen zu Schemas finden Sie unter Schemaübersicht.
Codebeispiele für das Abonnieren von Themen, die mit einem Schema verknüpft sind
Diese Beispiele zeigen, wie Sie Nachrichten verarbeiten, wenn Nachrichten abonniert werden, die mit Schemas konfigurierte Themen enthalten.
C++
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für C++ in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C++ API.
Avro ProtoC#
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für C# in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C# API.
Avro ProtoGo
Im folgenden Beispiel wird die Hauptversion der Go Pub/Sub-Clientbibliothek (v2) verwendet. Wenn Sie noch die v1-Bibliothek verwenden, finden Sie hier den Migrationsleitfaden für v2. Eine Liste der Codebeispiele für Version 1 finden Sie unter Eingestellte Codebeispiele.
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Go in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Go API.
Avro ProtoJava
Im folgenden Beispiel wird die Hauptversion der Go Pub/Sub-Clientbibliothek (v2) verwendet. Wenn Sie noch die v1-Bibliothek verwenden, finden Sie hier den Migrationsleitfaden für v2. Eine Liste der Codebeispiele für Version 1 finden Sie unter Eingestellte Codebeispiele.
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Go in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Go API.
Avro Protocol BufferNode.js
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für PHP in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Node.js API.
Avro Protocol BufferNode.js
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für PHP in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Node.js API.
Avro Protocol BufferPHP
Folgen Sie der Einrichtungsanleitung für PHP unter Schnellstart: Clientbibliotheken verwenden, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub PHP API.
Avro Protocol BufferPython
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Python in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Python API.
Avro Protocol BufferRuby
Im folgenden Beispiel wird die Ruby-Pub/Sub-Clientbibliothek v3 verwendet. Wenn Sie noch die v2-Bibliothek verwenden, finden Sie hier die Migrationsanleitung für v3. Eine Liste der Ruby v2-Codebeispiele finden Sie unter Eingestellte Codebeispiele.
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Ruby im Schnellstart: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Ruby API.
Avro Protocol BufferThema mit einem Avro-Schema mit Revisionen abonnieren
Für Avro müssen Nachrichten mit dem Schema geparst werden, mit dem sie codiert wurden. Sie können Nachrichten auch in ein anderes Schema übersetzen, indem Sie die Avro-Schemaauflösung verwenden.
Pub/Sub sorgt dafür, dass alle Schemaüberarbeitungen vorwärts- und rückwärtskompatibel mit allen anderen Überarbeitungen sind. Dank dieser Kompatibilität kann jede Revision als Reader- oder Writer-Schema verwendet werden.
Wenn Sie eine Nachricht parsen, die mit einer anderen Schemaversion als der Ihres Abonnenten codiert wurde, müssen Sie möglicherweise das ursprüngliche Schema abrufen und als Schreibschema übergeben.
Es empfiehlt sich, das Avro-Reader-Objekt zu cachen, das Nachrichten für jede Schemaversion parsen kann, um die Latenz und die Anzahl der Aufrufe der GetSchema
-API zu minimieren.
Der folgende Code zeigt diese Funktionen:
Lesen Sie die im vorherigen Abschnitt beschriebenen Attribute, um zu ermitteln, welche Schemaversion zum Codieren der Nachricht verwendet wird.
Die Schemaversion abrufen und einen damit generierten Reader im Cache speichern.
Die Nachricht wird in das Schema geparst, das Ihr Abonnent verwendet.
Go
Im folgenden Beispiel wird die Hauptversion der Go Pub/Sub-Clientbibliothek (v2) verwendet. Wenn Sie noch die v1-Bibliothek verwenden, finden Sie hier den Migrationsleitfaden für v2. Eine Liste der Codebeispiele für Version 1 finden Sie unter Eingestellte Codebeispiele.
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Go in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Go API.
Java
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Java in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Java API.
Python
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Python in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Python API.
Erforderliche Rollen
Führen Sie einen der folgenden Schritte aus, um die Berechtigungen zu erhalten, die Sie zum Validieren einer Nachricht anhand eines Schemas benötigen:
- Weisen Sie einem Dienstkonto eine der folgenden vordefinierten Rollen zu:
roles/pubsub.admin
,roles/pubsub.editor
oderroles/pubsub.viewer
. Erstellen Sie eine benutzerdefinierte Rolle für ein Dienstkonto und fügen Sie die folgenden Berechtigungen hinzu:
pubsub.schemas.validate
undpubsub.schemas.get
.Weitere Informationen zu benutzerdefinierten Rollen finden Sie unter Benutzerdefinierte IAM-Rollen erstellen und verwalten.