Démarrage rapide – Rouvrir des messages

Ce guide donne des exemples illustrant la procédure à suivre pour rouvrir des messages de l'API Cloud Pub/Sub.

Utiliser l'interface de ligne de commande gcloud

Le moyen le plus simple d'utiliser gcloud est de recourir à Cloud Shell. Vous pouvez également vous servir de l'outil de ligne de commande fourni avec le SDK Cloud. Les conditions préalables à la configuration sont automatiquement remplies pour le SDK Cloud si vous créez une instance de machine Compute Engine, dont les champs d'application d'accès incluent toutes les API Cloud et l'image Debian par défaut. La méthode la plus facile pour créer cette instance est d'utiliser l'UI de Compute Engine. Dans la suite de ce document, nous partons du principe que vous vous servez de l'un de ces outils de ligne de commande.

Pour en savoir plus sur l'utilisation de gcloud, consultez le Guide de démarrage rapide de gcloud. Lisez également la section consacrée à gcloud pubsub de la documentation de référence sur gcloud pour découvrir la liste complète des commandes gcloud utilisables dans Cloud Pub/Sub.

Créer et rechercher des instantanés

Créez un sujet et un abonnement. Pour profiter d'une meilleure interactivité, choisissez un délai de confirmation court :

alias pubsub='gcloud beta pubsub'
pubsub topics create seek-demo-topic
pubsub subscriptions create seek-demo-sub --topic=seek-demo-topic --ack-deadline=10

Jusqu'à présent, aucun message de l'abonnement n'a été confirmé. Enregistrez cet état en créant un instantané :

pubsub snapshots create my-snapshot --subscription=seek-demo-sub
pubsub snapshots list

Maintenant, publiez et extrayez un message. Ensuite, confirmez sa réception :

pubsub topics publish seek-demo-topic --message 'hello, world'
pubsub subscriptions pull --auto-ack seek-demo-sub

Notez que les extractions suivantes ne génèrent aucun nouveau message, mais certains doubles transitoires sont possibles :

pubsub subscriptions pull --auto-ack seek-demo-sub

Vous pouvez récupérer le message en recherchant l'abonnement associé à l'instantané. Sachez que le message peut ne pas être distribué instantanément : Pub/Sub ne garantit pas la latence de diffusion des messages. Pub/Sub certifie toutefois que les messages conservés dans l'instantané seront distribués au moins une fois :

pubsub subscriptions seek seek-demo-sub --snapshot=my-snapshot
pubsub subscriptions pull seek-demo-sub --auto-ack

Notez que vous pouvez rechercher d'autres abonnements associés au même instantané, à condition que le sujet de l'abonnement soit le même que celui de l'instantané :

pubsub subscriptions create seek-demo-sub2 --topic=seek-demo-topic --ack-deadline=10
pubsub subscriptions seek seek-demo-sub2 --snapshot=my-snapshot

L'extraction depuis seek-demo-sub2 affiche les messages publiés avant la création de seek-demo-sub2 :

pubsub subscriptions pull seek-demo-sub2 --auto-ack

Lorsque vous en avez terminé avec l'instantané, effectuez un nettoyage :

pubsub snapshots delete my-snapshot

Rechercher un horodatage

Pour rouvrir les messages confirmés, vous pouvez également rechercher un horodatage. Pour ce faire, vous devez d'abord configurer l'abonnement de manière à conserver les messages confirmés à l'aide de retain-acked-messages. Par défaut, les messages sont conservés pendant sept jours. Vous pouvez définir une durée plus courte, qui ne doit pas être inférieure à 10 minutes, en utilisant message-retention-duration. Pour en savoir plus sur la configuration de l'abonnement, consultez la page Rouvrir et supprimer des messages.

Cette opération n'est à effectuer que si vous souhaitez rechercher un horodatage, et non un instantané.

pubsub subscriptions update seek-demo-sub --retain-acked-messages

Maintenant, publiez et extrayez un message. Ensuite, confirmez sa réception :

pubsub topics publish seek-demo-topic --message 'hello, world'
pubsub subscriptions pull --auto-ack seek-demo-sub

La prochaine extraction ne doit renvoyer aucun message :

pubsub subscriptions pull seek-demo-sub

Remontez à présent dans le temps pour rechercher l'abonnement et récupérer le message. Sachez que les indicateurs arithmétiques de la date diffèrent entre les versions GNU et BSD (macOS) de la commande date :

TS_FORMAT=%Y-%m-%dT%H:%M:%SZ
pubsub subscriptions seek seek-demo-sub --time=$(date -u -d '-10 min' +$TS_FORMAT)

Une extraction ultérieure doit à nouveau afficher le message :

pubsub subscriptions pull --auto-ack seek-demo-sub

Vous pouvez également vous servir de la fonctionnalité de recherche pour ignorer la distribution de tous les messages publiés avant un moment précis, tel que la date et l'heure actuelles. Pour ce faire, recherchez l'abonnement à la date et l'heure actuelles afin de marquer tous les messages passés comme confirmés :

pubsub topics publish seek-demo-topic --message 'hello, world'
pubsub subscriptions seek seek-demo-sub --time=$(date -u +$TS_FORMAT)

Après un certain temps de propagation (60 secondes environ), le message ne sera plus distribué. Vous pouvez le vérifier en exécutant à plusieurs reprises la commande pull sans accuser réception du message :

pubsub subscriptions pull seek-demo-sub

Utiliser la Cloud Console

Vous pouvez créer des instantanés ou rechercher des instantanés existants depuis la page des détails de l'abonnement de la Cloud Console. Pour connaître les règles d'attribution de noms aux instantanés, consultez la section Noms de ressources.

La boîte de dialogue de recherche vous propose de rechercher un moment précis ou un instantané :

Vous pouvez également gérer des instantanés depuis la page des détails d'un sujet particulier :

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Documentation sur Cloud Pub/Sub