Cette page explique comment recevoir des messages à partir d'abonnements Lite. Vous pouvez recevoir des messages avec la bibliothèque cliente Pub/Sub Lite pour Java.
Les abonnements Lite connectent des sujets Lite aux applications d'abonnés. Les abonnés reçoivent les messages provenant des abonnements Lite. Les abonnés reçoivent chaque message envoyé au sujet Lite par les applications d'éditeur, y compris les messages envoyés par les éditeurs avant la création de l'abonnement Lite.
Avant de recevoir des messages d'un abonnement Lite, créez un sujet Lite, créez un abonnement Lite au sujet Lite et publiez des messages dans le sujet Lite.
Recevoir des messages
Pour recevoir des messages d'un abonnement Lite, demandez les messages à l'abonnement Lite. La bibliothèque cliente se connecte automatiquement aux partitions du sujet Lite associé à l'abonnement Lite. Si plusieurs clients abonnés sont instanciés, les messages sont distribués entre tous les clients. Le nombre de partitions dans le sujet détermine le nombre maximal de clients abonnés pouvant se connecter simultanément à un abonnement.
L'initialisation et le début de la réception des messages peuvent prendre jusqu'à une minute messages. Une fois initialisés, les messages sont reçus avec une latence minimale.
L'exemple suivant montre comment recevoir des messages provenant d'abonnements Lite :
gcloud
Cette commande nécessite Python 3.6 ou version ultérieure et l'installation du package Python grpcio. Pour les utilisateurs de macOS, Linux et Cloud Shell, exécutez :
sudo pip3 install grpcio
export CLOUDSDK_PYTHON_SITEPACKAGES=1
Pour recevoir des messages, utilisez la commande gcloud pubsub lite-subscriptions subscriptions :
gcloud pubsub lite-subscriptions subscribe SUBSCRIPTION_ID \
--location=LITE_LOCATION \
--auto-ack
Remplacez les éléments suivants :
- SUBSCRIPTION_ID : ID de l'abonnement Lite
- LITE_LOCATION : emplacement de l'abonnement Lite
Go
Avant d'exécuter cet exemple, suivez les instructions de configuration pour Go décrites dans l'article Bibliothèques clientes Pub/Sub Lite.
Java
Avant d'exécuter cet exemple, suivez les instructions de configuration de Java dans la section Bibliothèques clientes de Pub/Sub Lite.
Python
Avant d'exécuter cet exemple, suivez les instructions de configuration de Python dans la section Bibliothèques clientes de Pub/Sub Lite.
La bibliothèque cliente établit des connexions bidirectionnelles en streaming avec chacune des partitions du sujet Lite.
L'abonné demande des connexions aux partitions.
Le service Pub/Sub Lite envoie les messages à l'abonné.
Une fois que l'abonné a traité le message, il doit confirmer le message. La bibliothèque cliente traite et confirme les messages de manière asynchrone dans un rappel. Pour limiter le nombre de messages non confirmés que l'abonné peut stocker en mémoire, configurez les paramètres de contrôle de flux.
Si plusieurs abonnés reçoivent des messages en provenance du même abonnement Lite, le service Pub/Sub Lite connecte chaque abonné à une proportion égale de partitions. Par exemple, si deux abonnés utilisent le même abonnement Lite et que celui-ci est associé à un sujet Lite ayant deux partitions, chaque abonné reçoit les messages en provenance de l'une des partitions.
Accuser réception des messages
Pour confirmer un message, envoyez un acccusé de réception à l'abonnement Lite.
Go
Pour envoyer un accusé de réception, utilisez la méthode Message.Ack()
.
Java
Pour envoyer un accusé de réception, utilisez la méthode AckReplyConsumer.ack()
.
Python
Pour envoyer un accusé de réception, utilisez la méthode Message.ack()
.
Les abonnés doivent accuser réception de chaque message. Les abonnés reçoivent en premier le plus ancien message non confirmé, puis les messages suivants. Si un abonné ignore un message, accuse réception des messages suivants, puis se reconnecte, il reçoit le message non confirmé et chaque message ayant été confirmé après celui-ci.
Les abonnements Lite n'ont pas de délai d'accusé de réception et le service Pub/Sub Lite ne renvoie pas les messages non confirmés via une connexion en streaming ouverte.
Utiliser le contrôle de flux
Une fois que le service Pub/Sub Lite a distribué des messages aux abonnés, ceux-ci stockent en mémoire les messages non confirmés. Vous pouvez limiter le nombre de messages en attente que les abonnés peuvent stocker en mémoire à l'aide des paramètres de contrôle de flux. Les paramètres de contrôle de flux s'appliquent à chaque partition à partir de laquelle un abonné reçoit des messages.
Vous pouvez configurer les paramètres de contrôle de flux suivants :
- La taille des messages en attente. Taille maximale des messages en attente, en octets. La taille maximale doit être supérieure à la taille du message le plus volumineux.
- Le nombre de messages. Nombre maximal de messages en attente.
La taille d'un message est visible dans le champ size_bytes
.
Vous pouvez configurer les paramètres de contrôle de flux à l'aide de la bibliothèque cliente.
Go
Pour configurer les paramètres de contrôle de flux, transmettez ReceiveSettings
lorsque vous appelez pscompat.NewSubscriberClientWithSettings
. Vous pouvez définir les paramètres suivants dans ReceiveSettings
:
MaxOutstandingMessages
MaxOutstandingBytes
Pour obtenir un exemple, consultez cet exemple de contrôle de flux.
Java
Pour configurer les paramètres de contrôle de flux, utilisez les méthodes suivantes de la classe FlowControlRequest.Builder
:
Python
Pour configurer les paramètres de contrôle de flux, définissez les paramètres suivants dans la classe FlowControlSettings
:
bytes_outstanding
messages_outstanding
Par exemple, si le nombre maximal de messages est de 100 et que l'abonné se connecte à 10 partitions, il ne peut pas recevoir plus de 100 messages depuis l'une des 10 partitions. Le nombre total de messages en attente peut être supérieur à 100, mais l'abonné ne peut pas stocker plus de 100 messages de chaque partition.