In diesem Dokument erfahren Sie mehr zum Veröffentlichen von Nachrichten.
Eine Publisher-Anwendung erstellt und sendet Nachrichten an ein Thema. Pub/Sub bietet eine mindestens einmalige Nachrichtenzustellung und eine Best-Effort-Reihenfolge für vorhandene Abonnenten.
Der allgemeine Ablauf für eine Publisher-Anwendung ist:
- Eine Nachricht mit den entsprechenden Daten erstellen.
- Senden Sie eine Anfrage an den Pub/Sub-Server, um die Nachricht im angegebenen Thema zu veröffentlichen.
Hinweis
Führen Sie vor dem Konfigurieren des Veröffentlichungs-Workflows die folgenden Aufgaben aus:
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Pub/Sub-Publisher (roles/pubsub.publisher) für das Thema zuzuweisen, um die Berechtigungen zu 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.
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 finden Sie unter Nachrichtenformat.
Nachrichten veröffentlichen
Sie können Nachrichten mit der Google Cloud Console, der Google Cloud CLI, der Pub/Sub API und den Clientbibliotheken veröffentlichen. Die Clientbibliotheken können Nachrichten asynchron veröffentlichen.
In den folgenden Beispielen wird gezeigt, 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 Pub/Sub C++ API-Referenzdokumentation.
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.
Go
Im folgenden Beispiel wird die Hauptversion der Go Pub/Sub-Clientbibliothek (v2) verwendet. Wenn Sie noch die v1-Bibliothek verwenden, lesen Sie die Migrationsanleitung zu v2. Eine Liste der v1-Codebeispiele finden Sie unter Verworfene Codebeispiele.
Bevor Sie dieses Beispiel anwenden, folgen Sie der Einrichtungsanleitung für Go in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Pub/Sub Go API-Referenzdokumentation.
Java
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Java in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Pub/Sub Java API-Referenzdokumentation.
Node.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.
Node.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.
PHP
Folgen Sie der Einrichtungsanleitung für PHP unter Schnellstart: Clientbibliotheken verwenden, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Pub/Sub-PHP-API-Referenzdokumentation.
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 Pub/Sub Python API-Referenzdokumentation.
Ruby
Im folgenden Beispiel wird die Ruby Pub/Sub-Clientbibliothek v3 verwendet. Wenn Sie noch die v2-Bibliothek verwenden, lesen Sie die Migrationsanleitung zu v3. Eine Liste der Ruby v2-Codebeispiele finden Sie unter Verworfene Codebeispiele.
Folgen Sie der Einrichtungsanleitung für Ruby in der Kurzanleitung: Clientbibliotheken verwenden, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Ruby API.
Rust
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Rust in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Pub/Sub Rust API-Referenzdokumentation.
Nachdem Sie eine Nachricht veröffentlicht haben, gibt der Pub/Sub-Dienst die Nachrichten-ID an den Publisher zurück.
Attribute zum Veröffentlichen einer Nachricht verwenden
Sie können benutzerdefinierte Attribute als Metadaten in Pub/Sub-Nachrichten einbetten. Attribute werden verwendet, um zusätzliche Informationen zur Nachricht bereitzustellen, z. B. ihre Priorität, ihren Ursprung oder ihr Ziel. Attribute können auch zum Filtern von Nachrichten im Abo verwendet werden.
Beachten Sie die folgenden Richtlinien für die Verwendung von Attributen in Ihren Nachrichten:
Sie können maximal 100 Attribute pro Nachricht haben.
Attributschlüssel und -werte müssen Stringtypen sein. Es ist keine Codierung erforderlich.
Attributschlüssel dürfen nicht mit
googbeginnen und 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
}
Bei Duplikaten auf der Veröffentlichungsseite können für dieselbe clientseitige Originalnachricht unterschiedliche publishTime-Werte angezeigt werden, auch wenn die messageId identisch ist.
Das JSON-Schema PubsubMessage wird als Teil der REST- und RPC-Dokumentation veröffentlicht. Sie können benutzerdefinierte Attribute für Ereigniszeitstempel verwenden.
In den folgenden Beispielen wird gezeigt, wie Sie eine Nachricht mit Attributen in einem Thema veröffentlichen.
Console
So veröffentlichen Sie eine Nachricht 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 Pub/Sub C++ API-Referenzdokumentation.
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.
Go
Im folgenden Beispiel wird die Hauptversion der Go Pub/Sub-Clientbibliothek (v2) verwendet. Wenn Sie noch die v1-Bibliothek verwenden, lesen Sie die Migrationsanleitung zu v2. Eine Liste der v1-Codebeispiele finden Sie unter Verworfene Codebeispiele.
Bevor Sie dieses Beispiel anwenden, folgen Sie der Einrichtungsanleitung für Go in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Pub/Sub Go API-Referenzdokumentation.
Java
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Java in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Pub/Sub Java API-Referenzdokumentation.
Node.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.
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 Pub/Sub Python API-Referenzdokumentation.
Ruby
Im folgenden Beispiel wird die Ruby Pub/Sub-Clientbibliothek v3 verwendet. Wenn Sie noch die v2-Bibliothek verwenden, lesen Sie die Migrationsanleitung zu v3. Eine Liste der Ruby v2-Codebeispiele finden Sie unter Verworfene Codebeispiele.
Folgen Sie der Einrichtungsanleitung für Ruby in der Kurzanleitung: Clientbibliotheken verwenden, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Ruby API.
Rust
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Rust in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Pub/Sub Rust API-Referenzdokumentation.
Sortierungsschlüssel zum Veröffentlichen einer Nachricht verwenden
Wenn Sie Nachrichten in der richtigen Reihenfolge in Ihren Abonnentenclients empfangen möchten, müssen Sie Ihre Publisher-Clients so konfigurieren, dass Nachrichten mit Reihenfolgeschlüsseln veröffentlicht werden.
Informationen zum Konzept von Sortierschlüsseln finden Sie unter Nachrichten sortieren.
Im Folgenden finden Sie eine Liste wichtiger Überlegungen zur geordneten Nachrichtenübermittlung für Publisher-Clients:
Reihenfolge in einem einzelnen Publisher-Client: Wenn ein einzelner Publisher-Client Nachrichten mit demselben Reihenfolgeschlüssel in derselben Region veröffentlicht, empfängt der Abonnenten-Client diese Nachrichten in genau der Reihenfolge, in der sie veröffentlicht wurden. Wenn ein Publisher-Client beispielsweise die Nachrichten 1, 2 und 3 mit dem Sortierschlüssel A veröffentlicht, empfängt der Abonnenten-Client sie in der Reihenfolge 1, 2, 3.
Reihenfolge über mehrere Publisher-Clients hinweg: Die Reihenfolge der Nachrichten, die von Abonnenten-Clients empfangen werden, entspricht der Reihenfolge, in der sie in derselben Region veröffentlicht wurden, auch wenn mehrere Publisher-Clients denselben Reihenfolgeschlüssel verwenden. Die Publisher-Clients selbst haben jedoch keine Kenntnis von dieser Reihenfolge.
Wenn beispielsweise die Publisher-Clients X und Y jeweils Nachrichten mit dem Bestellschlüssel A veröffentlichen und die Nachricht von X vor der von Y von Pub/Sub empfangen wird, erhalten alle Abonnenten-Clients die Nachricht von X vor der von Y. Wenn eine strikte Nachrichtenreihenfolge über verschiedene Publisher-Clients hinweg erforderlich ist, müssen diese Clients einen zusätzlichen Koordinationsmechanismus implementieren, um sicherzustellen, dass sie Nachrichten mit demselben Reihenfolgeschlüssel nicht gleichzeitig veröffentlichen. Beispielsweise kann ein Sperrdienst verwendet werden, um die Eigentümerschaft eines Bestellschlüssels während der Veröffentlichung beizubehalten.
Reihenfolge über Regionen hinweg: Die Garantie für die Zustellung in der richtigen Reihenfolge gilt nur, wenn Veröffentlichungen für einen Reihenfolgeschlüssel in derselben Region erfolgen. Wenn Ihre Publisher-Anwendung Nachrichten mit demselben Reihenfolgeschlüssel in verschiedenen Regionen veröffentlicht, kann die Reihenfolge für diese Veröffentlichungen nicht erzwungen werden. Abonnenten können eine Verbindung zu jeder Region herstellen und die Reihenfolgegarantie bleibt erhalten.
Wenn Sie Ihre Anwendung in Google Cloudausführen, wird standardmäßig eine Verbindung zum Pub/Sub-Endpunkt in derselben Region hergestellt. Wenn Sie Ihre Anwendung in einer einzelnen Region innerhalb vonGoogle Cloud ausführen, interagieren Sie im Allgemeinen mit einer einzelnen Region.
Wenn Sie Ihre Publisher-Anwendung außerhalb vonGoogle Cloud oder in mehreren Regionen ausführen, können Sie sicherstellen, dass Sie eine Verbindung zu einer einzelnen Region herstellen, indem Sie beim Konfigurieren Ihres Pub/Sub-Clients einen Standortendpunkt verwenden. Alle Standortendpunkte für Pub/Sub verweisen auf einzelne Regionen. Weitere Informationen zu standortbezogenen Endpunkten finden Sie unter Pub/Sub-Endpunkte. Eine Liste aller standortbezogenen Endpunkte für Pub/Sub finden Sie unter Liste der standortbezogenen Endpunkte.
Veröffentlichungsfehler: Wenn die Veröffentlichung mit einem Reihenfolgeschlüssel fehlschlägt, schlagen in der Warteschlange befindliche Nachrichten mit demselben Reihenfolgeschlüssel im Publisher fehl, einschließlich zukünftiger Veröffentlichungsanfragen mit diesem Reihenfolgeschlüssel. Wenn solche Fehler auftreten, müssen Sie die Veröffentlichung mit Bestellschlüsseln fortsetzen. Ein Beispiel für die Fortsetzung des Veröffentlichungsvorgangs finden Sie unter Anfragen mit Sortierschlüsseln wiederholen.
Sie können Nachrichten mit Sortierschlüsseln über die Google Cloud Console, die Google Cloud CLI, die Pub/Sub API oder die Clientbibliotheken veröffentlichen.
Console
So veröffentlichen Sie eine Nachricht 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 Pub/Sub C++ API-Referenzdokumentation.
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.
Go
Im folgenden Beispiel wird die Hauptversion der Go Pub/Sub-Clientbibliothek (v2) verwendet. Wenn Sie noch die v1-Bibliothek verwenden, lesen Sie die Migrationsanleitung zu v2. Eine Liste der v1-Codebeispiele finden Sie unter Verworfene Codebeispiele.
Bevor Sie dieses Beispiel anwenden, folgen Sie der Einrichtungsanleitung für Go in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Pub/Sub Go API-Referenzdokumentation.
Java
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Java in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Pub/Sub Java API-Referenzdokumentation.
Node.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.
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 Pub/Sub Python API-Referenzdokumentation.
Ruby
Im folgenden Beispiel wird die Ruby Pub/Sub-Clientbibliothek v3 verwendet. Wenn Sie noch die v2-Bibliothek verwenden, lesen Sie die Migrationsanleitung zu v3. Eine Liste der Ruby v2-Codebeispiele finden Sie unter Verworfene Codebeispiele.
Folgen Sie der Einrichtungsanleitung für Ruby in der Kurzanleitung: Clientbibliotheken verwenden, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Ruby API.
Rust
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Rust in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Pub/Sub Rust API-Referenzdokumentation.
Publisher beobachten
Cloud Monitoring bietet eine Reihe von Messwerten zum Monitoring von Themen.
Informationen zum Überwachen eines Themas und zum Aufrechterhalten eines fehlerfreien Publishers finden Sie unter Fehlerfreien Publisher aufrechterhalten.
Nächste Schritte
Informationen zum Einschränken der Standorte, 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 Lieferoptionen finden Sie hier: