Auf dieser Seite wird erläutert, wie Sie Nachrichten von Lite-Abos erhalten. Sie können Nachrichten mit der Pub/Sub Lite-Clientbibliothek für Java empfangen.
Lite-Abonnements verbinden Lite-Themen mit Abonnentenanwendungen; Abonnenten erhalten Nachrichten von Lite-Abonnements. Abonnenten erhalten alle Nachrichten, die Publisher-Anwendungen an das Lite-Thema senden, einschließlich der Nachrichten, die Publisher vor dem Erstellen des Lite-Abonnements senden.
Bevor Sie Nachrichten von einem Lite-Abo erhalten, erstellen Sie ein Lite-Thema, erstellen Sie ein Lite-Abo für das Lite-Thema und veröffentlichen Sie Nachrichten für das Lite-Thema.
Nachrichten erhalten
Sie können Nachrichten aus dem Lite-Abo anfordern, wenn Sie Nachrichten von einem Lite-Abo erhalten möchten. Die Clientbibliothek stellt automatisch eine Verbindung zu den Partitionen im Lite-Thema her, das mit dem Lite-Abo verbunden ist. Wenn mehrere Abonnentenclients instanziiert sind, werden Nachrichten auf alle Clients verteilt. Die Anzahl der Partitionen im Thema bestimmt die maximale Anzahl von Abonnentenclients, die gleichzeitig eine Verbindung mit einem Abo herstellen können.
Es kann bis zu eine Minute dauern, bis Abonnenten Nachrichten erhalten. Nach der Initialisierung werden Nachrichten mit minimaler Latenz empfangen.
Im folgenden Beispiel wird gezeigt, wie Sie Nachrichten von Lite-Abos erhalten:
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
Verwenden Sie den Befehl gcloud pubsub lite-subscriptions subscribe, um Nachrichten zu erhalten:
gcloud pubsub lite-subscriptions subscribe SUBSCRIPTION_ID \
--location=LITE_LOCATION \
--auto-ack
Dabei gilt:
- SUBSCRIPTION_ID: die ID des Lite-Abos
- LITE_LOCATION: der Standort des Lite-Abos
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 stellt für jede der Partitionen im Lite-Thema bidirektionale Streaming-Verbindungen her.
Der Abonnent fordert Verbindungen zu den Partitionen an.
Der Pub/Sub Lite-Dienst stellt die Nachrichten an den Abonnenten zu.
Nachdem der Abonnent die Nachricht verarbeitet hat, muss er die Nachricht bestätigen. Die Clientbibliothek verarbeitet und bestätigt Nachrichten in einem Rückruf asynchron. Konfigurieren Sie die Einstellungen für die Ablaufsteuerung, um die Anzahl der nicht bestätigten Nachrichten zu begrenzen, die der Abonnent im Speicher speichern kann.
Wenn mehrere Abonnenten Nachrichten aus demselben Lite-Abo empfangen, verbindet der Pub/Sub Lite-Dienst jeden Abonnenten mit einem gleich großen Teil der Partitionen. Wenn z. B. zwei Abonnenten dasselbe Lite-Abo verwenden und das Lite-Abo mit einem Lite-Thema mit zwei Partitionen verknüpft ist, empfängt jeder Abonnent Nachrichten von einer der Partitionen.
Nachrichten bestätigen
Um eine Nachricht zu bestätigen, senden Sie eine Bestätigung an das Lite-Abo.
Go
Verwenden Sie zum Senden einer Bestätigung die Methode Message.Ack()
.
Java
Verwenden Sie zum Senden einer Bestätigung die Methode AckReplyConsumer.ack()
.
Python
Verwenden Sie zum Senden einer Bestätigung die Methode Message.ack()
.
Abonnenten müssen jede Nachricht bestätigen. Abonnenten erhalten zuerst die älteste unbestätigte Nachricht, gefolgt von jeder nachfolgenden Nachricht. Wenn ein Abonnent eine Nachricht überspringt, die nachfolgenden Nachrichten bestätigt und dann die Verbindung wiederhergestellt, erhält der Abonnent die nicht bestätigte Nachricht und jede nachfolgende bestätigte Nachricht.
Bei Lite-Abos gibt es keine Bestätigungsfrist und der Pub/Sub Lite-Dienst sendet unbestätigte Nachrichten nicht über eine offene Streamingverbindung noch einmal.
Ablaufsteuerung verwenden
Nachdem der Pub/Sub Lite-Dienst Nachrichten an Abonnenten zugestellt hat, speichern die Abonnenten nicht bestätigte Nachrichten im Speicher. Sie können die Anzahl der ausstehenden Nachrichten, die Abonnenten im Speicher speichern können, über die Einstellungen für die Ablaufsteuerung beschränken. Die Einstellungen für die Ablaufsteuerung gelten für jede Partition, von der ein Abonnent Nachrichten empfängt.
Sie können die folgenden Einstellungen für die Ablaufsteuerung konfigurieren:
- Größe der ausstehenden Nachrichten: Die maximale Größe der ausstehenden Nachrichten in Byte. Die maximale Größe muss größer als die Größe der größten Nachricht sein.
- Zahl der Nachrichten Die maximale Anzahl der ausstehenden Nachrichten.
Die Größe einer Nachricht wird im Feld size_bytes
angegeben.
Sie können die Ablaufsteuerungseinstellungen mit der Clientbibliothek konfigurieren.
Go
Wenn Sie die Einstellungen für die Ablaufsteuerung konfigurieren möchten, geben Sie ReceiveSettings
beim Aufruf von pscompat.NewSubscriberClientWithSettings
an. Sie können in ReceiveSettings
die folgenden Parameter festlegen:
MaxOutstandingMessages
MaxOutstandingBytes
Ein Beispiel finden Sie in diesem Beispiel zur Ablaufsteuerung.
Java
Verwenden Sie zum Konfigurieren der Einstellungen für die Ablaufsteuerung die folgenden Methoden in der Klasse FlowControlRequest.Builder
:
Python
Legen Sie die folgenden Parameter in der Klasse FlowControlSettings
fest, um die Einstellungen zur Ablaufsteuerung zu konfigurieren:
bytes_outstanding
messages_outstanding
Wenn die maximale Anzahl von Nachrichten beispielsweise 100 beträgt und der Abonnent eine Verbindung zu 10 Partitionen herstellt, kann der Abonnent nicht mehr als 100 Nachrichten von jeder der 10 Partitionen empfangen. Die Gesamtzahl der ausstehenden Nachrichten kann größer als 100 sein, der Abonnent kann jedoch nicht mehr als 100 Nachrichten von jeder Partition speichern.