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 die optimale Reihenfolge für bestehende 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
Bevor Sie den Veröffentlichungsworkflow konfigurieren, müssen Sie die folgenden Aufgaben ausführen:
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
Wenn Sie die REST API verwenden, müssen die Nachrichtendaten Base64-codiert sein.
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
Nachrichten veröffentlichen
Sie können Nachrichten mit der Google Cloud CLI oder der Pub/Sub API veröffentlichen. Die Clientbibliotheken können Nachrichten asynchron 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.
Optional: Nachrichtenattribute hinzufügen.
Klicken Sie auf Attribut hinzufügen.
Geben Sie einen Schlüssel und einen Wert für das Attribut 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 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.
Nachdem Sie eine Nachricht veröffentlicht haben, gibt der Pub/Sub-Dienst die Nachrichten-ID an den Publisher zurück.
Attribute verwenden
Sie können benutzerdefinierte Attribute als Metadaten in Pub/Sub-Nachrichten einbetten. Attribute können Text- oder Bytestrings sein. Pro Nachricht sind maximal 100 Attribute zulässig.
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 so dargestellt werden:
{ "data": string, "attributes": { string: string, ... }, "messageId": string, "publishTime": string, "orderingKey": string }
Das JSON-Schema PubsubMessage
wird als Teil der Dokumentation zu REST und RPC veröffentlicht.
gcloud
gcloud pubsub topics publish my-topic --message="hello" \ --attribute="origin=gcloud-sample,username=gcp"
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.
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.
Bestellschlüssel verwenden
Wenn Nachrichten denselben Reihenfolgeschlüssel haben und Sie die Nachrichten in derselben Region veröffentlichen, können Abonnenten die Nachrichten in der entsprechenden Reihenfolge empfangen. Das Veröffentlichen von Nachrichten mit Sortierungsschlüsseln kann die Latenz erhöhen. Verwenden Sie einen regionalen Endpunkt, um Nachrichten in derselben Region zu veröffentlichen.
Sie können Nachrichten mit Bestellschlüsseln über die Google Cloud Console, die Google Cloud CLI oder die Pub/Sub API veröffentlichen.
Console
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.
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 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.
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.
Wenn die Veröffentlichung mit einem Sortierungsschlüssel fehlschlägt, schlagen Nachrichten in der Warteschlange desselben Sortierschlüssels im Publisher fehl. Dies gilt auch für zukünftige Veröffentlichungsanfragen dieses Sortierschlüssels. Sie müssen die Veröffentlichung mit Sortierschlüsseln fortsetzen, wenn solche Fehler auftreten. Ein Beispiel für die Fortsetzung des Veröffentlichungsvorgangs finden Sie unter Anfragen mit Bestellschlüsseln wiederholen.
Schema verwenden
Sie können Nachrichten zu einem Thema veröffentlichen, das einem Schema zugeordnet ist. Weitere Informationen finden Sie unter Schemas erstellen und verwalten. Sie müssen die Nachrichten in dem Schema und Format codieren, das Sie beim Erstellen des Themas angegeben haben.
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 ProtoEinfach 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.
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 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 BufferBatchnachrichten in einer Veröffentlichungsanfrage
Sie können die Pub/Sub-Clientbibliothek für Ihren Publisher verwenden, um Nachrichten zu einem Thema zu veröffentlichen. Die Clientbibliothek verwendet die Batchfunktion, um mehrere Nachrichten zusammen in einem Dienstaufruf zu veröffentlichen. Durch die Stapelung oder Gruppierung von Nachrichten kann Pub/Sub einen höheren Durchsatz an Nachrichten erreichen. Sie können die Größe des Batches an Ihre geschäftlichen Anforderungen anpassen.
Batchnachrichten sind in einer Clientbibliothek standardmäßig aktiviert. Batch-Nachrichten erstellen Latenz für einzelne Nachrichten. Einzelne Nachrichten müssen so lange im Arbeitsspeicher abgelegt werden, bis der entsprechende Batch gefüllt ist. Erst dann werden die Nachrichten zum Thema veröffentlicht.
Wenn die Kosten unberücksichtigt sind, können Sie mehrere Publisher-Clients erstellen und Batchnachrichten deaktivieren. Dieser Prozess minimiert die Latenz und maximiert den Durchsatz durch horizontale Skalierung auf die Anzahl der Publisher. Kosten werden jedoch oft berücksichtigt. Das Senden mehrerer Nachrichten in einer einzelnen Veröffentlichungsanfrage ist eine Möglichkeit, mit weniger Publishern einen vergleichbaren Durchsatz zu erreichen. Wenn Sie bereit sind, gegen Latenz zu sparen, um Kosten zu sparen, insbesondere wenn Ihre Anwendung innerhalb kurzer Zeit relativ viele Nachrichten verarbeitet, können Sie Batchnachrichten verwenden.
Mit der Batch-Nachrichtenfunktion können Sie die Batchgröße in Byte oder der Anzahl von Nachrichten sowie den Zeitpunkt konfigurieren, nach dem der Batch veröffentlicht wird. Mit kleinen Batches von Nachrichten während der Spitzenveröffentlichung können Sie die Latenz steuern.
Batch-Messaging in einer Clientbibliothek konfigurieren
Sie können Nachrichten basierend auf der Größe der Nachrichtenanfrage, der Anzahl der Nachrichten und der Zeit im Batch zusammenfassen. Die Standardwerte für die Batch-Messaging-Variablen und die Namen der Variablen können je nach Clientbibliothek variieren. In der Python-Clientbibliothek steuern beispielsweise die folgenden Variablen Batchnachrichten:
Variable | Beschreibung | Wert |
---|---|---|
Max. Nachrichten | Die Anzahl der Nachrichten in einem Batch. | Standard=100 |
Max. Byte | Die maximale Größe eines Batches in MB. | Standard=1 MB |
maximale Latenzzeit | Die Zeit, nach der ein Batch veröffentlicht wird, auch wenn der Batch nicht gefüllt ist. | Standard=10 ms |
Sie können einen oder alle drei Werte in der Clientbibliothek angeben. Wenn einer der Werte für die Batchnachrichtenvariablen erreicht ist, veröffentlicht die Clientbibliothek den nächsten Nachrichten-Batch.
In den folgenden Codebeispielen erfahren Sie, wie Sie die Batch-Nachrichteneinstellungen für Ihren Publisher konfigurieren.
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.
Batch-Nachrichten deaktivieren
Wenn Sie die Batchverarbeitung in der Clientbibliothek deaktivieren möchten, setzen Sie den Wert von max_messages
auf 1.
Batch-Nachrichten und geordnete Zustellung
Wenn bei der geordneten Zustellung eine Nachricht im Batch nicht bestätigt wird, werden alle Nachrichten im Batch, einschließlich der Nachrichten, die vor der Nachricht gesendet wurden, die nicht bestätigt wurden, noch einmal zugestellt.
Kontingente und Limits für Batchnachrichten
Bevor Sie Batch-Nachrichten konfigurieren, sollten Sie Faktoren wie das Durchsatzkontingent für die Veröffentlichung und die maximale Größe eines Batches berücksichtigen. Die übergeordneten Clientbibliotheken sorgen dafür, dass Batchanfragen innerhalb der angegebenen Limits bleiben.
- 1.000 Byte ist die minimale Anfragegröße, die für Kostenzwecke berücksichtigt wird, auch wenn die tatsächliche Nachrichtengröße möglicherweise kleiner als 1.000 Byte ist.
- Pub/Sub hat ein Limit von 10 MB oder 1.000 Nachrichten für eine einzelne Batchveröffentlichungsanfrage.
Weitere Informationen finden Sie unter Kontingente und Limits für Pub/Sub.
Nachrichten komprimieren
Wenn Sie Pub/Sub verwenden, um Nachrichten zu veröffentlichen, die viele Daten enthalten, können Sie Ihre Daten mit gRPC komprimieren, um Netzwerkkosten zu sparen, bevor Ihr Publisher-Client die Veröffentlichungsanfrage sendet. Die Pub/Sub-Komprimierung für gRPC verwendet den Gzip-Algorithmus.
Das Komprimierungsverhältnis für die Verwendung der clientseitigen gRPC-Komprimierungsfunktion variiert je nach Publisher-Client und ist von den folgenden Faktoren abhängig:
Datenmenge. Das Komprimierungsverhältnis verbessert sich, wenn die Größe der Nutzlast von einigen hundert Byte auf viele Kilobyte an Daten zunimmt. Die Batcheinstellungen einer Veröffentlichungsanfrage bestimmen die Datenmenge, die in der jeweiligen Veröffentlichungsanfrage enthalten ist. Wir empfehlen, die Batcheinstellungen in Verbindung mit der gRPC-Komprimierung zu aktivieren.
Datentyp: Textbasierte Daten wie JSON oder XML sind im Vergleich zu Binärdaten wie Bildern komprimierbarer.
Wenn der Publisher-Client Google Cloud verwendet, können Sie mit dem Messwert Gesendete Byte (instance/network/sent_bytes_count
) den Veröffentlichungsdurchsatz in Byte messen. Wenn Ihr Publisher-Client eine andere Anwendung verwendet, müssen Sie die kundenspezifischen Tools für die Messung verwenden.
Das Codebeispiel in diesem Abschnitt zeigt ein Codebeispiel für die Java-Clientbibliothek, das auch die gRPC-Komprimierung enthält.
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.
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.
Anfragen wiederholen
Fehlgeschlagene Veröffentlichungen werden automatisch wiederholt, außer bei Fehlern, die keine Wiederholungen rechtfertigen. Mit diesem Beispielcode wird dargestellt, wie ein Publisher mit benutzerdefinierten Wiederholungseinstellungen erstellt wird. Beachten Sie, dass nicht alle Clientbibliotheken benutzerdefinierte Wiederholungseinstellungen unterstützen. Dazu wird auf die API-Referenzdokumentation für die Sprache Ihrer Wahl verwiesen:
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.
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.
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.
Wiederholungseinstellungen steuern, wie die Pub/Sub-Clientbibliotheken Veröffentlichungsanfragen wiederholen. Die Clientbibliotheken haben eine der folgenden Wiederholungseinstellungen:
- Zeitüberschreitung der ersten Anfrage: Die Zeitspanne, nach der eine Clientbibliothek nicht mehr auf die Fertigstellung der ersten Veröffentlichungsanfrage wartet.
- Wiederholungsverzögerung: Die Zeitspanne, die eine Clientbibliothek nach der Zeitüberschreitung einer Anfrage wartet, bevor sie die Anfrage wiederholt.
- Gesamtzeitüberschreitung: Die Zeitspanne, nach der eine Clientbibliothek keine weiteren Veröffentlichungsanfragen mehr wiederholt.
Damit Veröffentlichungsanfragen wiederholt werden können, muss die Zeitüberschreitung der ersten Anfrage kürzer sein als die Gesamtzeitüberschreitung. Wenn Sie beispielsweise exponentiellen Backoff verwenden, berechnen die Clientbibliotheken das Anfragezeitlimit und die Wiederholungsverzögerung folgendermaßen:
- Nach jeder Veröffentlichungsanfrage erhöht sich das Anfragezeitlimit um den Zeitüberschreitungsfaktor der Anfrage bis zum maximalen Anfragezeitlimit.
- Nach jedem Wiederholungsversuch erhöht sich die Wiederholungsverzögerung um den Wiederholungsverzögerungsfaktor bis zur maximalen Wiederholungsverzögerung.
Anfragen mit Bestellschlüsseln noch einmal senden
Wenn eine Clientbibliothek eine Anfrage wiederholt und die Nachricht einen Reihenfolgeschlüssel hat, wiederholt die Clientbibliothek die Anfrage unabhängig von den Wiederholungseinstellungen wiederholt.
Wenn ein nicht wiederholbarer Fehler auftritt, veröffentlicht die Clientbibliothek die Nachricht nicht und veröffentlicht keine weiteren Nachrichten mit demselben Reihenfolgeschlüssel. Wenn ein Publisher beispielsweise eine Nachricht an ein nicht vorhandenes Thema sendet, tritt ein nicht wiederholbarer Fehler auf. Wenn Sie weitere Nachrichten mit demselben Reihenfolgenschlüssel veröffentlichen möchten, rufen Sie eine Methode auf, um die Veröffentlichung fortzusetzen und dann wieder zu veröffentlichen.
Im folgenden Beispiel wird gezeigt, wie Nachrichten mit demselben Reihenfolgeschlüssel wieder veröffentlicht werden.
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.
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.
Ablaufsteuerung
Ein Publisher-Client kann versuchen, Nachrichten schneller zu veröffentlichen, als dieser Client Daten an den Pub/Sub-Dienst senden kann. Clients sind durch viele Faktoren begrenzt, darunter:
- Maschinen-CPU, RAM und Netzwerkkapazität
- Netzwerkeinstellungen, z. B. Anzahl der ausstehenden Anfragen und verfügbare Bandbreite
- Die Latenz jeder Veröffentlichungsanfrage, die hauptsächlich durch die Netzwerkverbindungen zwischen dem Pub/Sub-Dienst, dem Client und Google Cloud bestimmt wird
Wenn die Rate von Veröffentlichungsanfragen diese Limits überschreitet, werden Anfragen im Arbeitsspeicher angesammelt, bis sie mit dem Fehler DEADLINE_EXCEEDED
fehlschlagen. Dies ist besonders wahrscheinlich, wenn Zehntausende von Nachrichten in einer Schleife veröffentlicht werden und dadurch Tausende von Anfragen in Millisekunden generiert werden.
Sie können dieses Problem mithilfe der serverseitigen Messwerte in Monitoring diagnostizieren. Sie können die Anfragen, die mit DEADLINE_EXCEEDED
fehlgeschlagen sind, nicht sehen, sondern nur die erfolgreichen Anfragen. Die Rate erfolgreicher Anfragen gibt die Durchsatzkapazität Ihrer Clientmaschinen an und bietet eine Grundlage für die Konfiguration der Ablaufsteuerung.
Wenn Sie die Probleme mit der Ablaufrate minimieren möchten, konfigurieren Sie Ihren Publisher-Client mit Ablaufsteuerung, um die Rate der Veröffentlichungsanfragen zu begrenzen. Sie können die maximale Anzahl der Bytes konfigurieren, die für ausstehende Anfragen zugewiesen sind, und die maximale Anzahl zulässiger ausstehender Nachrichten. Legen Sie diese Limits entsprechend der Durchsatzkapazität Ihrer Clientmaschinen fest.
Die Publisher-Ablaufsteuerung ist über die Pub/Sub-Clientbibliotheken in den folgenden Sprachen verfügbar:
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.
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.
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.
Gleichzeitigkeitserkennung
Die Unterstützung für Gleichzeitigkeit ist programmiersprachenabhängig. Weitere Informationen finden Sie in der API-Referenzdokumentation.
Im folgenden Beispiel wird dargestellt, wie die Gleichzeitigkeitserkennung in einer Publisher-Anwendung funktioniert:
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.
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.
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.
Publisher überwachen
Cloud Monitoring bietet eine Reihe von Messwerten zur Überwachung von Themen.
Informationen zum Monitoring eines Themas und zur Pflege eines fehlerfreien Publishers finden Sie unter Stabilen Publisher verwalten.
Nä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.