In diesem Dokument wird erläutert, wie Sie ein Pub/Sub-Thema erstellen, aktualisieren, aufrufen und löschen. In diesem Dokument wird auch erläutert, wie Sie Themen und Abos benennen.
Datenreplikation in einem Thema
Ein Pub/Sub-Thema verwendet zum Speichern von Daten drei Zonen. Der Dienst garantiert die synchrone Replikation in mindestens zwei Zonen und die Best-Effort-Replikation in einer zusätzlichen dritten Zone. Die Pub/Sub-Replikation befindet sich nur in einer Region.
Eigenschaften eines Themas
Wenn Sie ein Thema erstellen oder aktualisieren, müssen Sie seine Eigenschaften angeben.
Standardabo hinzufügen Fügt dem Pub/Sub-Thema ein Standardabo hinzu. Sie können ein weiteres Abo für das Thema erstellen, nachdem das Thema erstellt wurde. Das Standardabo hat die folgenden Attribute:
- Abo-ID von
-sub
- Pull-Zustellungstyp
- Nachrichtenaufbewahrungsdauer von sieben Tagen
- Ablauf nach 31 Tagen Inaktivität
- Bestätigungsfrist von 10 Sekunden
- Richtlinie für sofortige Wiederholung
- Abo-ID von
Schema: Ein Schema ist ein Format, dem das Nachrichtendatenfeld entsprechen muss. Ein Schema ist ein Vertrag zwischen dem Publisher und dem Abonnenten, der von Pub/Sub erzwungen wird. Mit Themenschemas können Nachrichtentypen und -berechtigungen standardisiert werden, sodass sie von verschiedenen Teams in Ihrer Organisation verwendet werden können. Pub/Sub erstellt eine zentrale Behörde für Nachrichtentypen und -berechtigungen. Informationen zum Erstellen eines Themas mit Schema finden Sie unter Schemas erstellen und verwalten.
Aufbewahrungsdauer für Nachrichten: Gibt an, wie lange Nachrichten vom Pub/Sub-Thema nach der Veröffentlichung aufbewahrt werden. Nach Ablauf der Nachrichtenaufbewahrungsdauer kann Pub/Sub die Nachricht unabhängig vom Bestätigungsstatus verwerfen. Für das Speichern aller zu diesem Thema veröffentlichten Nachrichten fallen Gebühren für die Speicherung von Nachrichten an.
- Standard = Nicht aktiviert
- Mindestwert = 10 Minuten
- Maximalwert = 31 Tage
Einen vom Kunden verwalteten Verschlüsselungsschlüssel (CMEK) verwenden Gibt an, ob das Thema mit einem CMEK verschlüsselt ist. Pub/Sub verschlüsselt Nachrichten standardmäßig mit von Google verwalteten Schlüsseln. Wenn Sie diese Option angeben, verwendet Pub/Sub das Envelope-Verschlüsselungsmuster mit CMEK. Bei diesem Ansatz verschlüsselt Cloud KMS die Nachrichten nicht. Stattdessen verschlüsselt Cloud KMS die Datenverschlüsselungsschlüssel (Data Encryption Keys, DEKs), die Pub/Sub für jedes Thema erstellt. Pub/Sub verschlüsselt die Nachrichten mit dem neuesten DEK, der für das Thema generiert wurde. Pub/Sub entschlüsselt die Nachrichten kurz vor der Zustellung an die Abonnenten. Weitere Informationen zum Erstellen eines Schlüssels finden Sie unter Nachrichtenverschlüsselung konfigurieren.
Richtlinien für das Benennen von Themen, Abos oder Snapshots
Ein Pub/Sub-Ressourcenname identifiziert eine Pub/Sub-Ressource eindeutig, z. B. ein Thema, ein Abo oder einen Snapshot. Der Ressourcenname muss das folgende Format haben:
projects/project-identifier/collection/ID
project-identifier
: Muss die Projekt-ID sein, die über die Google Cloud Console verfügbar ist. Beispiel:my-cool-project
.collection
: Musstopics
,subscriptions
odersnapshots
sein.ID
: Muss den folgenden Richtlinien entsprechen:- Nicht mit dem String „
goog
“ beginnen - Muss mit einem Buchstaben beginnen
- Er muss zwischen 3 und 255 Zeichen lang sein
- Sie dürfen nur die folgenden Zeichen enthalten: Buchstaben
[A-Za-z]
, Ziffern[0-9]
, Bindestriche-
, Unterstriche_
, Punkte.
, Tilden~
sowie Pluszeichen+
und Prozentzeichen%
Sie können die Sonderzeichen aus der obigen Liste in Ressourcennamen ohne URL-Codierung verwenden. Alle anderen Sonderzeichen müssen in URLs korrekt codiert oder decodiert werden.
mi-tópico
ist beispielsweise eine ungültige ID.mi-t%C3%B3pico
ist jedoch gültig. Dieses Format ist wichtig, wenn Sie REST-Aufrufe ausführen.- Nicht mit dem String „
Thema erstellen
Erstelle ein Thema, bevor du es veröffentlichen oder abonnieren kannst.
Console
So erstellen Sie ein Thema:
Öffnen Sie in der Google Cloud Console die Pub/Sub-Seite Themen.
Klicken Sie auf Thema erstellen.
Geben Sie im Feld Themen-ID eine ID für das Thema ein.
Behalten Sie die Option Standardabo hinzufügen bei.
Wählen Sie nicht die anderen Optionen aus.
Klicken Sie auf Thema erstellen.
gcloud CLI
Führen Sie den Befehl gcloud pubsub topics create
aus, um ein Thema zu erstellen:
gcloud pubsub topics create TOPIC_ID
REST
Verwenden Sie die Methode projects.topics.create
, um ein Thema zu erstellen:
Die Anfrage muss mit einem Zugriffstoken im Header Authorization
authentifiziert werden. So rufen Sie ein Zugriffstoken für die aktuellen Standardanmeldedaten für Anwendungen ab: gcloud auth application-default print-access-token
.
PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID Authorization: Bearer ACCESS_TOKEN
Wobei:
Lösung:
{ "name": "projects/PROJECT_ID/topics/TOPIC_ID" }
C++
Folgen Sie der Einrichtungsanleitung für C++ in der Pub/Sub-Kurzanleitung mit Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C++ API.
C#
Folgen Sie der Einrichtungsanleitung für C# in der Pub/Sub-Kurzanleitung mit Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C# API.
Go
Folgen Sie der Einrichtungsanleitung für Go in der Pub/Sub-Kurzanleitung mit Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Go API.
Java
Folgen Sie der Einrichtungsanleitung für Java in der Pub/Sub-Kurzanleitung mit Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Java API.
Node.js
Folgen Sie der Einrichtungsanleitung für Node.js in der Pub/Sub-Kurzanleitung mit Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Node.js API.
PHP
Folgen Sie der Einrichtungsanleitung für PHP in der Pub/Sub-Kurzanleitung mit Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub PHP API.
Python
Folgen Sie der Einrichtungsanleitung für Python in der Pub/Sub-Kurzanleitung mit Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Python API.
Ruby
Folgen Sie der Einrichtungsanleitung für Ruby in der Pub/Sub-Kurzanleitung mit Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Ruby API.
Einschränkungen für Organisationsrichtlinien
Mit Organisationsrichtlinien kann das Erstellen von Themen eingeschränkt werden. Mit einer Richtlinie kann beispielsweise der Nachrichtenspeicher in einer Compute Engine-Region eingeschränkt werden. Um Fehler bei der Erstellung von Themen zu vermeiden, sollten Sie die Organisationsrichtlinien prüfen und gegebenenfalls aktualisieren, bevor Sie ein Thema erstellen.
Wenn Ihr Projekt neu erstellt wurde, warten Sie einige Minuten, bis die Organisationsrichtlinie initialisiert wurde, bevor Sie ein Thema erstellen.
Zu den Organisationsrichtlinien
Thema mit einem Schema erstellen
Beim Erstellen eines Themas können Sie ihm ein Schema zuweisen.
Im Folgenden finden Sie einige Richtlinien zur Verwendung von Schemas:
- Sie können Schemas nicht zu vorhandenen Themen hinzufügen.
- Sie können ein Schema nur angeben, wenn Sie ein Thema erstellen.
- Nachdem ein Schema mit einem Thema verknüpft wurde, können Sie das Schema nicht mehr aktualisieren oder seine Verknüpfung mit diesem Thema entfernen.
- Sie können dasselbe Schema auf andere neue Themen anwenden.
- Wenn Sie ein Schema löschen, schlägt die Veröffentlichung in allen verknüpften Themen fehl.
Weitere Informationen zu Schemas finden Sie unter Schemas erstellen und verwalten.
Console
So erstellen Sie ein Thema und weisen ihm ein Schema zu:
Rufen Sie in der Google Cloud Console die Seite Pub/Sub-Themen auf.
Klicken Sie auf Thema erstellen.
Geben Sie im Feld Themen-ID eine ID für das Thema ein.
Klicken Sie auf das Kästchen Schema verwenden. Übernehmen Sie für die restlichen Optionen die Standardeinstellungen.
Klicken Sie auf Pub/Sub-Schema auswählen und dann auf Neues Schema erstellen. Wenn Sie ein vorhandenes Schema verwenden möchten, fahren Sie mit Schritt 7 fort.
Geben Sie im Feld Schema-ID eine ID für Ihr Schema ein.
Wählen Sie als Schematyp entweder Avro oder den Protokollpuffer aus.
Geben Sie im Feld Schemadefinition die Avro- oder Protocol Buffer-Definition für Ihr Schema ein.
Klicken Sie auf Erstellen, um das Schema zu speichern.
Suchen Sie im Dialogfeld Thema erstellen im Feld Pub/Sub-Schema auswählen nach Ihrem Schema.
Klicken Sie auf Erstellen, um das Thema zu speichern und mit dem ausgewählten Schema zuzuweisen.
gcloud
Führen Sie den Befehl gcloud pubsub topics create
aus, um ein Thema zu erstellen, das einem zuvor erstellten Schema zugewiesen ist:
gcloud pubsub topics create TOPIC_ID \ --message-encoding=ENCODING_TYPE \ --schema=SCHEMA_ID
Wobei:
- TOPIC_ID ist die ID für das von Ihnen erstellte Thema.
- ENCODING_TYPE ist die Codierung von Nachrichten, die anhand des Schemas validiert wurden. Dieser Wert muss entweder
JSON
oderBINARY
sein. - SCHEMA_ID ist die ID eines vorhandenen Schemas.
Sie können auch ein Schema aus einem anderen Google Cloud-Projekt zuweisen:
gcloud pubsub topics create TOPIC_ID \ --message-encoding=ENCODING_TYPE \ --schema=SCHEMA_ID \ --schema-project=SCHEMA_PROJECT \ --project=TOPIC_PROJECT
Wobei:
- SCHEMA_PROJECT ist die Projekt-ID des Google Cloud-Projekts für das Schema.
- TOPIC_PROJECT ist die Projekt-ID des Google Cloud-Projekts für das Thema.
REST
Verwenden Sie die Methode projects.topics.create
, um ein Thema zu erstellen:
Anfrage
Die Anfrage muss mit einem Zugriffstoken im Header Authorization
authentifiziert werden. So rufen Sie ein Zugriffstoken für die aktuellen Standardanmeldedaten für Anwendungen ab: gcloud auth application-default print-access-token
.
PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID Authorization: Bearer ACCESS_TOKEN
Anfragetext:
{ "schemaSettings": { "schema": "SCHEMA_NAME", "encoding": "ENCODING_TYPE" } }
Wobei:
- PROJECT_ID ist die Projekt-ID.
- TOPIC_ID ist Ihre Themen-ID.
- SCHEMA_NAME ist der Name des Schemas, mit dem Nachrichten veröffentlicht werden sollen. Das Format ist:
projects/PROJECT_ID/schemas/SCHEMA_ID
. - ENCODING_TYPE ist die Codierung von Nachrichten, die anhand des Schemas validiert wurden. Dies muss entweder
JSON
oderBINARY
sein.
Lösung:
{ "name": "projects/PROJECT_ID/topics/TOPIC_ID", "schemaSettings": { "schema": "SCHEMA_NAME", "encoding": "ENCODING_TYPE" } }
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.
C#
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.
Einfach loslegen (Go)
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.
Node.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.
PHP
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.
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.
Ruby
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.
Thema löschen
Wenn Sie ein Thema löschen, werden seine Abos nicht gelöscht. Der Rückstand der Nachricht aus dem Abo ist für Abonnenten verfügbar. Nachdem ein Thema gelöscht wurde, haben seine Abos den Themennamen _deleted-topic_
. Wenn Sie versuchen, ein Thema mit dem Namen eines gerade gelöschten Themas zu erstellen, wird für einen kurzen Zeitraum ein Fehler angezeigt.
Console
Öffnen Sie in der Google Cloud Console die Pub/Sub-Seite Themen.
Wählen Sie ein Thema aus und klicken Sie auf
Weitere Aktionen.Klicken Sie auf Löschen.
Das Fenster Thema löschen wird angezeigt.
Geben Sie
delete
ein und klicken Sie dann auf Löschen.
gcloud CLI
Verwenden Sie den Befehl gcloud pubsub topics delete
, um ein Thema zu löschen:
gcloud pubsub topics delete TOPIC_ID
REST
Verwenden Sie die Methode projects.topics.delete
, um ein Thema zu löschen:
Anfrage
Die Anfrage muss mit einem Zugriffstoken im Header Authorization
authentifiziert werden. So rufen Sie ein Zugriffstoken für die aktuellen Standardanmeldedaten für Anwendungen ab: gcloud auth application-default print-access-token
.
DELETE https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID Authorization: Bearer ACCESS_TOKEN
Wobei:
Lösung:
Wenn die Anfrage erfolgreich ist, ist die Antwort ein leeres JSON-Objekt.
C++
Folgen Sie der Einrichtungsanleitung für C++ in der Pub/Sub-Kurzanleitung mit Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C++ API.
C#
Folgen Sie der Einrichtungsanleitung für C# in der Pub/Sub-Kurzanleitung mit Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C# API.
Go
Folgen Sie der Einrichtungsanleitung für Go in der Pub/Sub-Kurzanleitung mit Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Go API.
Java
Folgen Sie der Einrichtungsanleitung für Java in der Pub/Sub-Kurzanleitung mit Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Java API.
Node.js
Folgen Sie der Einrichtungsanleitung für Node.js in der Pub/Sub-Kurzanleitung mit Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Node.js API.
PHP
Folgen Sie der Einrichtungsanleitung für PHP in der Pub/Sub-Kurzanleitung mit Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub PHP API.
Python
Folgen Sie der Einrichtungsanleitung für Python in der Pub/Sub-Kurzanleitung mit Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Python API.
Ruby
Folgen Sie der Einrichtungsanleitung für Ruby in der Pub/Sub-Kurzanleitung mit Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Ruby API.
Thema auflisten
Console
Öffnen Sie in der Google Cloud Console die Pub/Sub-Seite Themen.
Auf der Seite Themen werden alle verfügbaren Themen aufgeführt.
gcloud CLI
Verwenden Sie den Befehl gcloud pubsub topics list
, um Themen aufzulisten:
gcloud pubsub topics list
REST
Verwenden Sie die Methode projects.topics.list
, um Themen aufzulisten:
Anfrage
Die Anfrage muss mit einem Zugriffstoken im Header Authorization
authentifiziert werden. So rufen Sie ein Zugriffstoken für die aktuellen Standardanmeldedaten für Anwendungen ab: gcloud auth application-default print-access-token
.
GET https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics Authorization: Bearer ACCESS_TOKEN
Wobei:
Lösung:
{ "topics": [ { "name": "projects/PROJECT_ID/topics/mytopic1", ... }, { "name": "projects/PROJECT_ID/topics/mytopic2", ... } ] }
C++
Folgen Sie der Einrichtungsanleitung für C++ in der Pub/Sub-Kurzanleitung mit Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C++ API.
C#
Folgen Sie der Einrichtungsanleitung für C# in der Pub/Sub-Kurzanleitung mit Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C# API.
Go
Folgen Sie der Einrichtungsanleitung für Go in der Pub/Sub-Kurzanleitung mit Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Go API.
Java
Folgen Sie der Einrichtungsanleitung für Java in der Pub/Sub-Kurzanleitung mit Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Java API.
Node.js
Folgen Sie der Einrichtungsanleitung für Node.js in der Pub/Sub-Kurzanleitung mit Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Node.js API.
PHP
Folgen Sie der Einrichtungsanleitung für PHP in der Pub/Sub-Kurzanleitung mit Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub PHP API.
Python
Folgen Sie der Einrichtungsanleitung für Python in der Pub/Sub-Kurzanleitung mit Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Python API.
Ruby
Folgen Sie der Einrichtungsanleitung für Ruby in der Pub/Sub-Kurzanleitung mit Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Ruby API.
Standardmäßig werden maximal 100 Ergebnisse pro Abfrage zurückgegeben. Mit dem Parameter für die Seitengröße können Sie einen Alternativwert von bis zu 1.000 angeben.
Themen beobachten
Sie können Themen innerhalb von Pub/Sub überwachen.
Nächste Schritte
Wählen Sie den Abotyp für Ihr Thema aus.
Erstellen Sie ein Abo für Ihr Thema.
Erstellen oder ändern Sie ein Thema mit der gcloud CLI.
Erstellen oder ändern Sie ein Thema mit REST APIs.