In diesem Dokument erfahren Sie mehr zum Veröffentlichen von Nachrichten.
Eine Publisher-Anwendung erstellt und sendet Nachrichten an ein Thema. Pub/Sub bietet mindestens einmalige Nachrichtenzustellung und optimale Leistung. an bestehende Abonnenten zu liefern.
Der allgemeine Ablauf für eine Publisher-Anwendung ist:
- Eine Nachricht mit den entsprechenden Daten erstellen.
- Anfrage an den Pub/Sub-Server senden, um die Nachricht zu veröffentlichen zum angegebenen Thema hinzu.
Hinweise
Bevor Sie den Veröffentlichungsworkflow konfigurieren, müssen Sie die folgenden Schritte ausgeführt haben Aufgaben:
- Weitere Informationen zu Themen und zum Veröffentlichungsworkflow
- Thema erstellen
- Wählen Sie ein Abo aus und erstellen Sie es.
Erforderliche Rollen
Um die Berechtigungen zu erhalten, die Sie zum Veröffentlichen von Nachrichten in einem Thema benötigen,
bitten Sie Ihren Administrator, Ihnen
Die IAM-Rolle Pub/Sub-Publisher (roles/pubsub.publisher
) für das Thema.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff 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.
Nachrichtenformat
Eine Nachricht besteht aus Feldern mit den Nachrichtendaten und Metadaten. Geben Sie in der Nachricht mindestens eine der folgenden Optionen an:
- Nachrichtendaten
- Ein Sortierschlüssel
- Attribute mit zusätzlichen Metadaten
Der Pub/Sub-Dienst fügt der Nachricht die folgenden Felder hinzu:
- Eine für das Thema eindeutige Nachrichten-ID
- Ein Zeitstempel, wenn der Pub/Sub-Dienst die Nachricht empfängt
Weitere Informationen zu Nachrichten
Nachrichten veröffentlichen
Sie können Nachrichten mit der Google Cloud Console, Google Cloud CLI, Pub/Sub API, und die Clientbibliotheken. Die Clientbibliotheken können Nachrichten asynchron veröffentlichen.
Die folgenden Beispiele zeigen, wie Sie eine Nachricht in einem Thema veröffentlichen.
Console
So veröffentlichen Sie eine Nachricht:
Rufen Sie in der Google Cloud Console die Seite Pub/Sub-Themen auf.
Klicken Sie auf die Themen-ID.
Klicken Sie auf der Seite Themendetails unter Nachrichten auf Nachricht veröffentlichen.
Geben Sie im Feld Nachrichtentext die Nachrichtendaten ein.
Klicken Sie auf Veröffentlichen.
gcloud
Veröffentlichen Sie eine Nachricht mit dem Befehl gcloud pubsub topics publish:
gcloud pubsub topics publish TOPIC_ID \ --message=MESSAGE_DATA \ [--attribute=KEY="VALUE",...]
Dabei gilt:
- TOPIC_ID: ID des Themas
- MESSAGE_DATA: ein String mit den Nachrichtendaten
- KEY ist der Schlüssel eines Nachrichtenattributs
- VALUE: der Wert für den Schlüssel des Nachrichtenattributs
REST
Senden Sie eine POST-Anfrage wie die folgende, um eine Nachricht zu veröffentlichen:
POST https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID:publish Content-Type: application/json Authorization: Bearer $(gcloud auth application-default print-access-token)
Dabei gilt:
- PROJECT_ID: Projekt-ID des Projekts mit dem Thema
- TOPIC_ID: ID des Themas
Geben Sie im Anfragetext die folgenden Felder an:
{ "messages": [ { "attributes": { "KEY": "VALUE", ... }, "data": "MESSAGE_DATA", } ] }
Dabei gilt:
- KEY: der Schlüssel eines Nachrichtenattributs
- VALUE: der Wert für den Schlüssel des Nachrichtenattributs
- MESSAGE_DATA ist ein base64-codierter String mit den Nachrichtendaten
Die Nachricht muss entweder ein nicht leeres Datenfeld oder mindestens ein Attribut enthalten.
Wenn die Anfrage erfolgreich ist, ist die Antwort ein JSON-Objekt mit der Nachrichten-ID. Das folgende Beispiel ist eine Antwort mit einer Nachrichten-ID:
{ "messageIds": [ "19916711285", ] }
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 zu Pub/Sub C# API.
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 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.
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 zu Pub/Sub Node.js 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 zu 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 PHP-API von Pub/Sub.
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.
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 zu Pub/Sub Ruby API.
Nachdem Sie eine Nachricht veröffentlicht haben, gibt der Pub/Sub-Dienst die Nachrichten-ID an den Publisher zurück.
Mit Attributen eine Mitteilung veröffentlichen
Sie können benutzerdefinierte Attribute als Metadaten in Pub/Sub-Nachrichten einbetten. Attribute werden verwendet, um zusätzliche Informationen zur Nachricht bereitzustellen, wie Priorität, Ursprung oder Ziel. Attribute können auch zum Filtern von Nachrichten im Abo verwendet werden.
Beachten Sie bei der Verwendung von Attributen in Nachrichten die folgenden Richtlinien:
Attribute können Text- oder Bytestrings sein.
Sie können maximal 100 Attribute pro Nachricht angeben.
Attributschlüssel dürfen nicht mit
goog
beginnen und dürfen 256 Byte nicht überschreiten.Attributwerte dürfen 1.024 Byte nicht überschreiten.
Das Nachrichtenschema kann wie folgt dargestellt werden:
{ "data": string, "attributes": { string: string, ... }, "messageId": string, "publishTime": string, "orderingKey": string }
Für Duplikate auf Veröffentlichungsseite können unterschiedliche publishTime
-Werte angezeigt werden
für dieselbe clientseitige Originalnachricht, auch mit derselben messageId
.
Das JSON-Schema PubsubMessage
wird als Teil der
REST und
RPC
Dokumentation. Für Ereigniszeitstempel können Sie benutzerdefinierte Attribute verwenden.
In den folgenden Beispielen wird gezeigt, wie Sie eine Nachricht mit Attributen veröffentlichen. zu einem Thema.
Console
So veröffentlichen Sie eine Mitteilung mit Attributen:
Rufen Sie in der Google Cloud Console die Seite Themen auf.
Klicken Sie auf das Thema, für das Sie Nachrichten veröffentlichen möchten.
Klicken Sie auf der Seite mit den Themendetails auf Nachrichten.
Klicken Sie auf Nachricht veröffentlichen.
Geben Sie im Feld Nachrichtentext die Nachrichtendaten ein.
Klicken Sie unter Nachrichtenattribute auf Attribut hinzufügen.
Geben Sie ein Schlüssel/Wert-Paar ein.
Fügen Sie bei Bedarf weitere Attribute hinzu.
Klicken Sie auf Veröffentlichen.
gcloud
gcloud pubsub topics publish my-topic --message="hello" \ --attribute="origin=gcloud-sample,username=gcp,eventTime='2021-01-01T12:00:00Z'"
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 zu Pub/Sub C# API.
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 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.
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 zu Pub/Sub Node.js 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.
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 zu Pub/Sub Ruby API.
Sortierschlüssel zum Veröffentlichen einer Nachricht verwenden
Um Nachrichten in Ihren Abonnentenclients geordnet zu empfangen, müssen Sie um Nachrichten mit Sortierungsschlüsseln zu veröffentlichen.
Weitere Informationen zum Konzept der Sortierung von Schlüsseln finden Sie unter Bestellnachrichten.
Hier ist eine Liste der wichtigsten Überlegungen für geordnete Nachrichten für Publisher Kunden:
Bestellung bei einem einzelnen Publisher-Client: Wenn ein einzelner Publisher-Kunde Nachrichten mit demselben Sortierungsschlüssel in derselben Region veröffentlicht, erhält der Abonnentenclient diese Nachrichten in genau der Reihenfolge, veröffentlicht wurden. Wenn ein Publisher beispielsweise Nachrichten 1, 2 und 3 mit dem Reihenfolgeschlüssel A, dem Abonnentenclient erhält sie in der Reihenfolge 1, 2 und 3.
Reihenfolge für mehrere Publisher-Clients: Die Reihenfolge der eingegangenen Nachrichten. die von Abonnenten gekauft wurden, der Reihenfolge entspricht, in der sie die in derselben Region veröffentlicht werden, auch wenn mehrere Publisher-Kunden das und zwar denselben Reihenfolgeschlüssel. Die Publisher selbst haben jedoch nicht Wissen über diese Bestellung.
Wenn z. B. die Publisher-Kunden X und Y Nachrichten mit dem Sortierungsschlüssel A veröffentlichen, und die Nachricht von X wird von Pub/Sub vor Y, dann alle Abonnentenclients Nachrichten von X vor Ys empfangen. Ist die Nachrichtenreihenfolge bei verschiedenen Publisher-Kunden erforderlich sind, müssen diese eine zusätzliche Koordinationsmechanismus, um sicherzustellen, dass Nachrichten nicht und zwar denselben Reihenfolgeschlüssel. Beispiel: Ein Schließdienst kann verwendet werden, um die Inhaberschaft eines Bestellschlüssels während der Veröffentlichung zu behalten.
Regionsübergreifende Sortierung: Die Nachrichtenreihenfolge wird nur für Nachrichten erwartet. die in derselben Region veröffentlicht wurden. Stellen Sie daher sicher, dass Ihre Publisher-Kunden Endpunkte für standortbasierte Dienste um Nachrichten in derselben Region für die und zwar denselben Reihenfolgeschlüssel. Abonnenten-Clients können diese Nachrichten dann empfangen in Reihenfolge.
Veröffentlichungsfehler: Wenn die Veröffentlichung mit einem Reihenfolgeschlüssel fehlschlägt, in der Warteschlange Nachrichten mit demselben Reihenfolgeschlüssel im Publisher schlagen fehl, einschließlich zukünftiger Publish-Anfragen dieses Bestellschlüssels. Du musst die Veröffentlichung fortsetzen mit wenn solche Fehler auftreten. Ein Beispiel für die Fortsetzung des Veröffentlichungsvorgang finden Sie unter Anfragen mit Sortierungsschlüsseln wiederholen.
Sie können Nachrichten mit Sortierschlüsseln über die Google Cloud Console veröffentlichen, Google Cloud CLI, Pub/Sub API oder die Clientbibliotheken.
Console
So veröffentlichen Sie eine Mitteilung mit Attributen:
Rufen Sie in der Google Cloud Console die Seite Themen auf.
Klicken Sie auf das Thema, für das Sie Nachrichten veröffentlichen möchten.
Klicken Sie auf der Seite mit den Themendetails auf Nachrichten.
Klicken Sie auf Nachricht veröffentlichen.
Geben Sie im Feld Nachrichtentext die Nachrichtendaten ein.
Geben Sie im Feld Nachrichtenreihenfolge einen Reihenfolgeschlüssel ein.
Klicken Sie auf Veröffentlichen.
gcloud
Verwenden Sie zum Veröffentlichen einer Nachricht mit einem Reihenfolgenschlüssel den Befehl gcloud pubsub topics publish
und das Flag --ordering-key
:
gcloud pubsub topics publish TOPIC_ID \ --message=MESSAGE_DATA \ --ordering-key=ORDERING_KEY
Dabei gilt:
- TOPIC_ID: ID des Themas
- MESSAGE_DATA: ein String mit den Nachrichtendaten
- ORDERING_KEY ist ein String mit einem Sortierungsschlüssel
REST
Senden Sie eine POST-Anfrage wie die folgende, um eine Nachricht mit einem Reihenfolgeschlüssel zu veröffentlichen:
POST https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID:publish Content-Type: application/json Authorization: Bearer $(gcloud auth application-default print-access-token)
Dabei gilt:
- PROJECT_ID: Projekt-ID des Projekts mit dem Thema
- TOPIC_ID: ID des Themas
Geben Sie im Anfragetext die folgenden Felder an:
{ "messages": [ { "attributes": { "KEY": "VALUE", ... }, "data": "MESSAGE_DATA", "ordering_key": "ORDERING_KEY", } ] }
Dabei gilt:
- KEY: der Schlüssel eines Nachrichtenattributs
- VALUE: der Wert für den Schlüssel des Nachrichtenattributs
- MESSAGE_DATA ist ein base64-codierter String mit den Nachrichtendaten
- ORDERING_KEY ist ein String mit einem Sortierungsschlüssel
Die Nachricht muss entweder ein nicht leeres Datenfeld oder mindestens ein Attribut enthalten.
Wenn die Anfrage erfolgreich ist, ist die Antwort ein JSON-Objekt mit der Nachrichten-ID. Das folgende Beispiel ist eine Antwort mit einer Nachrichten-ID:
{ "messageIds": [ "19916711285", ] }
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 zu Pub/Sub C# API.
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 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.
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 zu Pub/Sub Node.js 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.
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 zu Pub/Sub Ruby API.
Publisher überwachen
Cloud Monitoring bietet eine Reihe von Messwerten zum Überwachen von Themen.
Informationen zur Überwachung eines Themas und zur Aufrechterhaltung eines fehlerfreien Publishers finden Sie unter Sorgen Sie für einen fehlerfreien Publisher.
Nächste Schritte
Informationen zum Einschränken der Speicherorte, an denen Pub/Sub Nachrichtendaten speichert, finden Sie unter Pub/Sub-Ressourcenstandorte einschränken
Informationen zum Veröffentlichen von Nachrichten mit Schema finden Sie unter Schemaübersicht.
Informationen zum Konfigurieren erweiterter Zustellungsoptionen finden Sie unter: