Auf dieser Seite wird erläutert, wie Sie Nachrichten zu Lite-Themen veröffentlichen. Sie können Nachrichten mit der Pub/Sub Lite-Clientbibliothek für Java veröffentlichen.
Nach dem Veröffentlichen von Nachrichten und Erstellen eines Lite-Abos für ein Lite-Thema können Sie Nachrichten vom Lite-Abo empfangen.
Nachrichtenformat
Eine Nachricht besteht aus Feldern mit den Nachrichtendaten und Metadaten. Geben Sie in der Nachricht Folgendes an:
- Nachrichtendaten
- Ein Sortierschlüssel
- Eine Ereigniszeit
- Attribute mit zusätzlichen Metadaten
Die Clientbibliothek weist die Nachricht automatisch einer Partition zu. Der Pub/Sub Lite-Dienst fügt der Nachricht die folgenden Felder hinzu:
- Eine innerhalb der Partition eindeutige Nachrichten-ID
- Ein Zeitstempel für den Zeitpunkt, zu dem der Pub/Sub Lite-Dienst die Nachricht in der Partition speichert
Nachrichten veröffentlichen
Wenn Sie Nachrichten veröffentlichen möchten, fordern Sie eine Streamingverbindung an das Lite-Thema an und senden Sie dann Nachrichten über die Streamingverbindung.
Das folgende Beispiel zeigt, wie Sie Nachrichten in einem Lite-Thema veröffentlichen:
gcloud
Für diesen Befehl ist Python 3.6 oder höher erforderlich und das grpcio-Python-Paket muss installiert sein. Führen Sie für MacOS-, Linux- und Cloud Shell-Nutzer Folgendes aus:
sudo pip3 install grpcio
export CLOUDSDK_PYTHON_SITEPACKAGES=1
Veröffentlichen Sie eine Nachricht mit dem Befehl gcloud pubsub lite-topics publish:
gcloud pubsub lite-topics publish TOPIC_ID \
--location=LITE_LOCATION \
--message=MESSAGE_DATA
Dabei gilt:
- TOPIC_ID: die ID des Lite-Themas
- LITE_LOCATION: der Standort des Lite-Themas
- MESSAGE_DATA: ein String mit den Nachrichtendaten
Go
Bevor Sie dieses Beispiel ausführen, folgen Sie der Anleitung zur Einrichtung von Go in Pub/Sub Lite-Clientbibliotheken
Java
Bevor Sie dieses Beispiel ausführen, folgen Sie den Schritten zur Einrichtung von Java in Pub/Sub Lite-Clientbibliotheken.
Python
Bevor Sie dieses Beispiel ausführen, folgen Sie den Schritten zur Einrichtung von Java in Pub/Sub Lite-Clientbibliotheken.
Die Clientbibliothek sendet asynchron Nachrichten und verarbeitet Fehler. Wenn ein Fehler auftritt, sendet die Clientbibliothek die Nachricht erneut.
- Der Pub/Sub Lite-Dienst schließt den Stream.
- Die Clientbibliothek puffert die Nachrichten und stellt eine Verbindung zum Lite-Thema wieder her.
- Die Clientbibliothek sendet die Nachrichten der Reihe nach.
Nachdem Sie eine Nachricht veröffentlicht haben, speichert der Pub/Sub Lite-Dienst die Nachricht in einer Partition und gibt die Nachrichten-ID an den Publisher zurück.
Sortierschlüssel verwenden
Wenn Nachrichten denselben Reihenfolgeschlüssel haben, weist die Clientbibliothek die Nachrichten derselben Partition zu. Der Sortierschlüssel darf maximal 1.024 Byte lang sein.
Der Sortierschlüssel befindet sich im Feld key
einer Nachricht.
Sie können Sortierschlüssel mit der Clientbibliothek festlegen.
gcloud
Für diesen Befehl ist Python 3.6 oder höher erforderlich und das grpcio-Python-Paket muss installiert sein. Führen Sie für MacOS-, Linux- und Cloud Shell-Nutzer Folgendes aus:
sudo pip3 install grpcio
export CLOUDSDK_PYTHON_SITEPACKAGES=1
Veröffentlichen Sie eine Nachricht mit dem Befehl gcloud pubsub lite-topics publish:
gcloud pubsub lite-topics publish TOPIC_ID \
--location=LITE_LOCATION \
--ordering-key=ORDERING_KEY \
--message=MESSAGE_DATA
Dabei gilt:
- TOPIC_ID: die ID des Lite-Themas
- LITE_LOCATION: der Standort des Lite-Themas
- ORDERING_KEY: ein String, mit dem Nachrichten Partitionen zugewiesen werden
- MESSAGE_DATA: ein String mit den Nachrichtendaten
Go
Bevor Sie dieses Beispiel ausführen, folgen Sie der Anleitung zur Einrichtung von Go in Pub/Sub Lite-Clientbibliotheken
Java
Bevor Sie dieses Beispiel ausführen, folgen Sie den Schritten zur Einrichtung von Java in Pub/Sub Lite-Clientbibliotheken.
Python
Bevor Sie dieses Beispiel ausführen, folgen Sie den Schritten zur Einrichtung von Java in Pub/Sub Lite-Clientbibliotheken.
Mit Reihenfolgeschlüsseln können Sie mehrere Nachrichten an dieselbe Partition senden, sodass Abonnenten die Nachrichten in der Reihenfolge empfangen. Die Clientbibliothek kann einer gleichen Partition mehrere Reihenfolgeschlüssel zuweisen.
Zeitpunkt des Termins festlegen
Sie können die Ereigniszeit verwenden, um Ihre Lite-Mitteilungen zu veröffentlichen. Die Ereigniszeit ist benutzerdefiniert , das Sie Ihrer Mitteilung hinzufügen können.
Sie können den Ereigniszeitstempel mit der Clientbibliothek oder der gcloud CLI festlegen.
Für diesen Befehl ist Python 3.6 oder höher erforderlich und das grpcio-Python-Paket muss installiert sein. Führen Sie für MacOS-, Linux- und Cloud Shell-Nutzer Folgendes aus:
sudo pip3 install grpcio
export CLOUDSDK_PYTHON_SITEPACKAGES=1
Veröffentlichen Sie eine Nachricht mit dem Befehl gcloud pubsub lite-topics publish:
gcloud pubsub lite-topics publish TOPIC_ID \
--location=LITE_LOCATION \
--event-time=EVENT_TIME \
--message=MESSAGE_DATA
Dabei gilt:
TOPIC_ID: die ID des Lite-Themas
LITE_LOCATION: der Standort des Lite-Themas
EVENT_TIME: eine vom Nutzer angegebene Ereigniszeit. Weitere Informationen zu Zeitformaten erhalten Sie
gcloud topic datetimes
.MESSAGE_DATA: ein String mit den Nachrichtendaten
Attribute verwenden
Nachrichtenattribute sind Schlüssel/Wert-Paare mit Metadaten zur Nachricht. Die Attribute können Text- oder Byte-Strings sein.
Die Attribute befinden sich im Feld attributes
einer Nachricht. Mit der Clientbibliothek können Sie Attribute festlegen.
gcloud
Für diesen Befehl ist Python 3.6 oder höher erforderlich und das grpcio-Python-Paket muss installiert sein. Führen Sie für MacOS-, Linux- und Cloud Shell-Nutzer Folgendes aus:
sudo pip3 install grpcio
export CLOUDSDK_PYTHON_SITEPACKAGES=1
Veröffentlichen Sie eine Nachricht mit dem Befehl gcloud pubsub lite-topics publish:
gcloud pubsub lite-topics publish TOPIC_ID \
--location=LITE_LOCATION \
--message=MESSAGE_DATA \
--attribute=KEY=VALUE,...
Dabei gilt:
- TOPIC_ID: die ID des Lite-Themas
- LITE_LOCATION: der Standort des Lite-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
Go
Bevor Sie dieses Beispiel ausführen, folgen Sie der Anleitung zur Einrichtung von Go in Pub/Sub Lite-Clientbibliotheken
Java
Bevor Sie dieses Beispiel ausführen, folgen Sie den Schritten zur Einrichtung von Java in Pub/Sub Lite-Clientbibliotheken.
Python
Bevor Sie dieses Beispiel ausführen, folgen Sie den Schritten zur Einrichtung von Java in Pub/Sub Lite-Clientbibliotheken.
Attribute können angeben, wie eine Nachricht verarbeitet werden soll. Abonnenten können das Feld attributes
einer Nachricht parsen und die Nachricht entsprechend ihren Attributen verarbeiten.
Nachrichten im Batch verarbeiten
Die Clientbibliothek veröffentlicht Nachrichten im Batch. Größere Batches benötigen weniger Rechenressourcen, erhöhen aber die Latenz. Sie können die Batchgröße mit den Batcheinstellungen ändern.
In der folgenden Tabelle sind die Batch-Einstellungen aufgeführt, die Sie konfigurieren können:
Einstellung | Beschreibung | Default |
---|---|---|
Größe der Anfrage | Die maximale Größe des Batches in Byte. | 3,5 MiB |
Zahl der Nachrichten | Die maximale Anzahl von Nachrichten in einem Batch. | 1.000 Nachrichten |
Verzögerung bei der Veröffentlichung | Die Zeit in Millisekunden zwischen dem Hinzufügen der Nachricht zu einem Batch und dem Senden des Batches an das Lite-Thema. | 50 Millisekunden |
Sie können Batch-Einstellungen mit der Clientbibliothek konfigurieren.
Go
Bevor Sie dieses Beispiel ausführen, folgen Sie der Anleitung zur Einrichtung von Go in Pub/Sub Lite-Clientbibliotheken
Java
Bevor Sie dieses Beispiel ausführen, folgen Sie den Schritten zur Einrichtung von Java in Pub/Sub Lite-Clientbibliotheken.
Python
Bevor Sie dieses Beispiel ausführen, folgen Sie den Schritten zur Einrichtung von Java in Pub/Sub Lite-Clientbibliotheken.
Wenn eine Publisher-Anwendung gestartet wird, erstellt die Client-Bibliothek einen Batch für jede Partition in einem Lite-Thema. Wenn ein Lite-Thema beispielsweise zwei Partitionen hat, erstellen Publisher zwei Batches und senden jeden Batch an eine Partition.
Nachdem Sie eine Nachricht veröffentlicht haben, wird sie von der Clientbibliothek gepuffert, bis der Batch die maximale Anforderungsgröße, die maximale Anzahl von Nachrichten oder die Veröffentlichungsverzögerung überschreitet.
Nachrichten in eine Reihenfolge bringen
Lite-Themen sortieren Nachrichten in jeder Partition, indem Sie die Nachrichten veröffentlichen. Verwenden Sie einen Reihenfolgeschlüssel, um Nachrichten derselben Partition zuzuweisen.
Pub/Sub Lite liefert die Nachrichten aus einer Partition nacheinander und Abonnenten können die Nachrichten der Reihe nach verarbeiten. Weitere Informationen finden Sie unter Nachrichten empfangen.
Idempotenz veröffentlichen
Pub/Sub Lite-Clientbibliotheken unterstützen idempotentes Veröffentlichen, von der folgenden Versionen:
- java-pubsublite: Version 1.10.0.
- python-pubsublite: Version 1.8.0.
- google-cloud-go: Pub/Sub-Lite-Version 1.7.0.
Wird die Veröffentlichung einer Nachricht aufgrund eines Netzwerk- oder Serverfehlers wiederholt, wird genau einmal gespeichert. Idempotenz wird nur innerhalb derselben Sitzung garantiert. sie können nicht garantiert werden, wenn dieselbe Mitteilung mit einem neuen Publisher erneut veröffentlicht wird. Client. Es fallen keine zusätzlichen Servicekosten an und es werden keine Veröffentlichungskosten erhöht. Latenz.
Idempotente Veröffentlichung aktivieren oder deaktivieren
Idempotente Veröffentlichung ist im Pub/Sub Lite-Client standardmäßig aktiviert Bibliotheken. Sie kann über die Einstellungen des Publisher-Clients in der jeweiligen Clientbibliothek.
Wenn die idempotente Veröffentlichung aktiviert ist, wird der in einem Veröffentlichungsergebnis zurückgegebene Offset
-1
sein. Dieser Wert wird zurückgegeben, wenn die Nachricht als
Duplikat einer bereits erfolgreich veröffentlichten Nachricht, aber der Server hat dies nicht
haben genügend Informationen, um den Offset der Nachricht zum Zeitpunkt der Veröffentlichung zurückzugeben.
Nachrichten, die von Abonnenten empfangen werden, weisen immer einen gültigen Offset auf.
Fehlerbehebung
Erhaltene Duplikate
Da Idempotenz auf eine einzelne Sitzung beschränkt ist, kann es zu Duplikaten kommen, wenn erstellen Sie den Publisher-Client neu, um dieselben Nachrichten zu veröffentlichen.
Ein Abonnentenclient kann dieselbe Nachricht mehrmals empfangen, werden Abonnenten vom Pub/Sub Lite-Dienst automatisch zugewiesen Dies ist die Standardeinstellung. Eine Nachricht wird möglicherweise noch einmal an einen anderen Abonnenten gesendet wenn eine Neuzuweisung erfolgt.
Publisher-Fehler
Der Status für eine Publisher-Sitzung ist die automatische Speicherbereinigung auf dem Server Inaktivität. Wird eine Sitzung nach diesem Zeitraum fortgesetzt, erhält der Publisher-Client endet mit einer Fehlermeldung wie „Nicht bestandene Voraussetzung: Erwartet“ muss die Sequenznummer für die Veröffentlichung...“ und akzeptiert keine neuen Nachrichten. Erstellen Sie den Publisher-Client neu, um diesen Fehler zu beheben.