In diesem Dokument wird beschrieben, wie Sie Nachrichten in einem Thema mit einem Schema veröffentlichen.
Hinweise
Bevor du den Veröffentlichungsworkflow konfigurierst, musst du die folgenden Aufgaben erledigt haben:
- Weitere Informationen zur Funktionsweise von Pub/Sub-Schemas
- Verknüpfen Sie ein Schema mit einem Thema.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Pub/Sub Publisher (roles/pubsub.publisher
) für das Thema 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 im Schema und Format codieren, das Sie beim Erstellen des Themas angegeben haben. Eine Nachricht entspricht dem mit dem Thema verknüpften Schema, wenn sie mit einer der Schemaüberarbeitungen im zulässigen Bereich von Überarbeitungen übereinstimmt. Nachrichten werden in der Reihenfolge der neuesten zulässigen Versionen mit den Versionen verglichen, bis entweder eine Übereinstimmung gefunden wird oder die älteste zulässige Version erreicht wird. Pub/Sub fügt einer Nachricht, die erfolgreich in einem Thema veröffentlicht wurde, das mit einem Schema verknüpft ist, die folgenden Attribute hinzu:
googclient_schemaname
: Den Namen des Schemas, das für die Validierung verwendet wird.googclient_schemaencoding
: Die Codierung der Nachricht, entweder JSON oder BINARY.googclient_schemarevisionid
: Die Revision-ID des Schemas, das zum Parsen und Validieren der Nachricht verwendet wird. Jede Version hat eine eindeutige Versions-ID. Die Versions-ID ist eine automatisch generierte achtstellige UUID.
Wenn eine Nachricht nicht mit einer der vom Thema zulässigen Schemaversionen übereinstimmt, gibt Pub/Sub für die Veröffentlichungsanfrage einen INVALID_ARGUMENT
-Fehler zurück.
Pub/Sub prüft Nachrichten nur zum Zeitpunkt der Veröffentlichung auf Schemaversionen. Wenn Sie nach der Veröffentlichung einer Nachricht eine neue Schemaversion committen oder das mit einem Thema verknüpfte Schema ändern, wird die Nachricht nicht noch einmal ausgewertet und keine der angehängten Schemanachrichtenattribute werden geändert.
Sie können Nachrichten in einem Google Cloud-Projekt mit der Google Cloud Console, der gcloud CLI, der Pub/Sub API oder den Cloud-Clientbibliotheken in einem Thema mit einem verknüpften Schema veröffentlichen.
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Veröffentlichen Sie eine Beispielnachricht mit dem Befehl gcloud pubsub topics publish.
gcloud pubsub topics publish TOPIC_ID \ --message=MESSAGE
Ersetzen Sie Folgendes:
TOPIC_ID: Name des bereits erstellten Themas.
MESSAGE: Nachricht, die für das Thema veröffentlicht wurde. Eine Beispielnachricht könnte
{"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 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
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 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
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 beschränken.
Weitere Informationen zum Empfangen von Nachrichten finden Sie unter Abotyp auswählen.