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 Schemaeinstellungen angegeben sind, die mit dem Thema verknüpft sind.
Der Abonnent kann die mit einem Thema verknüpften Schemaeinstellungen bestimmen, indem er sich die folgenden Attribute ansieht:
googclient_schemaname: Der Name des Schemas, das für die Validierung verwendet wird. Wenn das Schema gelöscht wird, 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 wird. Jeder Revision ist eine eindeutige Revisions-ID zugeordnet. Die Revisions-ID ist eine automatisch generierte achtstellige UUID. Wenn die Revision gelöscht wird, lautet die ID_deleted-schema-revision_.
Weitere Informationen zu Schemas finden Sie unter Schemaübersicht.
Codebeispiele zum 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 Pub/Sub C++ API-Referenzdokumentation.
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 (Version 2) verwendet. Wenn Sie noch die Version 1 verwenden, finden Sie weitere Informationen im Migrationsleitfaden zu Version 2. Eine Liste der Codebeispiele für Version 1 finden Sie unter Verworfene 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 zur Pub/Sub Go API.
Avro ProtoJava
Im folgenden Beispiel wird die Hauptversion der Go Pub/Sub-Clientbibliothek (Version 2) verwendet. Wenn Sie noch die Version 1 verwenden, finden Sie weitere Informationen im Migrationsleitfaden zu Version 2. Eine Liste der Codebeispiele für Version 1 finden Sie unter Verworfene 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 zur Pub/Sub Go API.
Avro Protocol BufferNode.js
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Node.js 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 Node.js 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 Version 3 verwendet. Wenn Sie noch die Version 2 verwenden, finden Sie weitere Informationen im Migrationsleitfaden zu Version 3. Eine Liste der Codebeispiele für Ruby Version 2 finden Sie unter Verworfene Codebeispiele.
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Ruby in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Ruby API.
Avro Protocol BufferThema abonnieren, das mit einem Avro-Schema mit Revisionen verknüpft ist
Avro erfordert, dass Nachrichten mit dem Schema geparst werden, mit dem sie codiert sind. Sie können Nachrichten auch mit der Avro-Schemaauflösung in ein anderes Schema übersetzen.
Pub/Sub sorgt dafür, dass alle Schemaversionen mit allen anderen Versionen vorwärts- und rückwärtskompatibel sind. Dank dieser Kompatibilität kann jede Version als Leser- oder Schreiberschema verwendet werden.
Wenn Sie eine Nachricht parsen, die mit einer anderen Schemaversion codiert wurde als die, die Ihr Abonnent verwendet, müssen Sie möglicherweise das ursprüngliche Schema abrufen und als Schreiberschema übergeben.
Es empfiehlt sich, das Avro-Leserobjekt im Cache zu speichern, mit dem Nachrichten für jede gefundene Schemaversion geparst werden können, um die Latenz zu minimieren und die Anzahl der Aufrufe der GetSchema-API zu reduzieren.
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.
Rufen Sie die Schemaversion ab und speichern Sie einen damit generierten Leser im Cache.
Parsen Sie die Nachricht in das Schema, das Ihr Abonnent verwendet.
Go
Im folgenden Beispiel wird die Hauptversion der Go Pub/Sub-Clientbibliothek (Version 2) verwendet. Wenn Sie noch die Version 1 verwenden, finden Sie weitere Informationen im Migrationsleitfaden zu Version 2. Eine Liste der Codebeispiele für Version 1 finden Sie unter Verworfene 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 zur 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 zur 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 zur Pub/Sub Python API.
Erforderliche Rollen
Führen Sie einen der folgenden Schritte aus, um die Berechtigungen zu erhalten, die zum Validieren einer Nachricht anhand eines Schemas erforderlich sind:
- Weisen Sie einem Dienstkonto eine der folgenden vordefinierten Rollen zu:
roles/pubsub.admin,roles/pubsub.editoroderroles/pubsub.viewer. Erstellen Sie eine benutzerdefinierte Rolle für ein Dienstkonto und fügen Sie die folgenden Berechtigungen hinzu:
pubsub.schemas.validateundpubsub.schemas.get.Weitere Informationen zu benutzerdefinierten Rollen finden Sie unter Benutzerdefinierte IAM-Rollen erstellen und verwalten.