In diesem Dokument erfahren Sie, wie Sie Nachrichten in einem Thema mit einem Schema veröffentlichen.
Hinweis
Bevor Sie den Veröffentlichungs-Workflow konfigurieren, müssen Sie die folgenden Aufgaben ausführen:
- Funktionsweise von Pub/Sub-Schemas verstehen.
- Schema mit einem Thema verknüpfen.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen für das Thema die IAM-Rolle Pub/Sub-Publisher (roles/pubsub.publisher) zuzuweisen, damit Sie die Berechtigungen erhalten, die Sie zum Veröffentlichen von Nachrichten in einem Thema benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Sie benötigen zusätzliche Berechtigungen, um Themen und Abos zu erstellen oder zu aktualisieren.Nachrichten mit Schema veröffentlichen
Sie können Nachrichten in einem Thema veröffentlichen, das mit einem Schema verknüpft ist. Sie müssen die Nachrichten in dem Schema und Format codieren, das Sie angegeben haben, als Sie das Thema erstellt haben. Eine Nachricht entspricht dem mit dem Thema verknüpften Schema, wenn sie einer der Schemaversionen im zulässigen Versionsbereichentspricht. Nachrichten werden anhand von Versionen in der Reihenfolge von der neuesten zulässigen Version bis entweder eine Übereinstimmung gefunden wird oder die älteste zulässige Version erreicht ist ausgewertet. Pub/Sub fügt einer Nachricht, die erfolgreich in einem Thema mit einem Schema veröffentlicht wurde, die folgenden Attribute hinzu:
googclient_schemaname: Der Name des Schemas, das für die Validierung verwendet wird.googclient_schemaencoding: Die Codierung der Nachricht, entweder JSON oder BINARY.googclient_schemarevisionid: Die Versions-ID des Schemas, das zum Parsen und Validieren der Nachricht verwendet wird. Jeder Version ist eine eindeutige Versions-ID zugeordnet. Die Versions-ID ist eine automatisch generierte achtstellige UUID.
Wenn eine Nachricht keiner der vom Thema zulässigen Schemaversionen entspricht, gibt Pub/Sub einen INVALID_ARGUMENT-Fehler an die Veröffentlichungsanfrage zurück.
Pub/Sub wertet Nachrichten nur zur Veröffentlichungszeit anhand von Schemaversionen aus. Wenn Sie nach dem Veröffentlichen einer Nachricht oder das mit einem Thema verknüpfte Schema ändern eine neue Schemaversion festlegen wird diese Nachricht nicht neu ausgewertet und die angehängten Schema-Nachrichtenattribute werden nicht geändert.
Sie können Nachrichten in einem Thema mit einem zugehörigen Schema in einem Google Cloud-Projekt über die Google Cloud Console, die gcloud CLI, die Pub/Sub API oder die Cloud-Clientbibliotheken veröffentlichen.
gcloud
Aktivieren Sie Cloud Shell in der Google Cloud Console.
Unten in der Google Cloud Console wird eine Cloud Shell Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.
Veröffentlichen Sie eine Beispielnachricht mit dem Befehl gcloud pubsub topics publish.
gcloud pubsub topics publish TOPIC_ID \ --message=MESSAGEErsetzen Sie Folgendes:
TOPIC_ID: Name des Themas, das Sie bereits erstellt haben.
MESSAGE: Nachricht, die im Thema veröffentlicht wurde. Eine Beispielnachricht kann
{"name": "Alaska", "post_abbr": "AK"}sein.
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, lesen Sie den Migrationsleitfaden zu Version 2. Eine Liste der Codebeispiele für Version 1 finden Sie unter Veraltete 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
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.
Avro ProtoNode.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, lesen Sie den Migrationsleitfaden zu Version 3. Eine Liste der Codebeispiele für Ruby Version 2 finden Sie unter Veraltete 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 BufferNächste Schritte
Informationen zum Einschränken der Standorte, an denen Pub/Sub Nachrichtendaten speichert, finden Sie unter Pub/Sub-Ressourcenstandorte einschränken.
Weitere Informationen zum Empfangen von Nachrichten finden Sie unter Abotyp auswählen.