Relire un message dans Pub/Sub en recherchant un instantané ou un horodatage
Pub/Sub ne peut pas récupérer les messages dont vous avez confirmé la réception. Cependant, il peut parfois s'avérer nécessaire de relire les messages confirmés, par exemple si vous avez effectué un accusé de réception erroné. Vous pouvez ensuite utiliser la fonctionnalité de recherche pour marquer les messages précédemment confirmés comme non confirmés et forcer Pub/Sub à redistribuer ces messages. Vous pouvez également utiliser la fonctionnalité de recherche pour supprimer les messages non confirmés en définissant leur état sur "Confirmé".
Recherchez un instantané ou un code temporel pour relire les messages d'un abonnement. Ce guide donne des exemples illustrant la procédure à suivre pour rouvrir des messages Pub/Sub déjà confirmés à l'aide de la fonctionnalité Seek.
Pour obtenir des instructions détaillées sur cette tâche directement dans la console Google Cloud, cliquez sur Visite guidée :
Avant de commencer
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Set up a Google Cloud console project.
Click to:
- Create or select a project.
- Enable the Pub/Sub API for that project.
You can view and manage these resources at any time in the Google Cloud console.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Set up a Google Cloud console project.
Click to:
- Create or select a project.
- Enable the Pub/Sub API for that project.
You can view and manage these resources at any time in the Google Cloud console.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Utiliser l'interface de ligne de commande gcloud
Le moyen le plus simple d'utiliser gcloud est de recourir à Cloud Shell. Vous pouvez aussi utiliser l'outil de ligne de commande fourni avec la Google Cloud CLI. Les conditions préalables à la configuration sont automatiquement remplies pour la CLI gcloud 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'interface utilisateur 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.
Consultez é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 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 :
gcloud pubsub topics create seek-demo-topic gcloud 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é :
gcloud pubsub snapshots create my-snapshot --subscription=seek-demo-sub gcloud pubsub snapshots list
Maintenant, publiez et extrayez un message. Ensuite, confirmez sa réception :
gcloud pubsub topics publish seek-demo-topic --message 'hello, world' gcloud 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 :
gcloud 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 :
gcloud pubsub subscriptions seek seek-demo-sub --snapshot=my-snapshot gcloud pubsub subscriptions pull seek-demo-sub --auto-ack
Notez que vous pouvez rechercher d'autres abonnements pour le même instantané, à condition que Le sujet de l'abonnement est identique à celui de l'instantané:
gcloud pubsub subscriptions create seek-demo-sub2 --topic=seek-demo-topic --ack-deadline=10 gcloud pubsub subscriptions seek seek-demo-sub2 --snapshot=my-snapshot
L'extraction depuis seek-demo-sub2
affiche désormais les messages publiés avant la création de seek-demo-sub2
:
gcloud pubsub subscriptions pull seek-demo-sub2 --auto-ack
Lorsque vous en avez terminé avec l'instantané, effectuez un nettoyage :
gcloud 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
. Si retain-acked-messages
est défini, Pub/Sub conserve les messages confirmés pendant sept jours.
Cette opération n'est à effectuer que si vous souhaitez rechercher un horodatage, et non un instantané.
gcloud pubsub subscriptions update seek-demo-sub --retain-acked-messages
Maintenant, publiez et extrayez un message. Ensuite, confirmez sa réception :
gcloud pubsub topics publish seek-demo-topic --message 'hello, world' gcloud pubsub subscriptions pull --auto-ack seek-demo-sub
La prochaine extraction ne doit renvoyer aucun message :
gcloud 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 :
export TS_FORMAT=%Y-%m-%dT%H:%M:%SZ gcloud pubsub subscriptions seek seek-demo-sub --time=$(date -u -d '-10 min' +$TS_FORMAT)
Pour en savoir plus sur les formats d'heure acceptés, consultez Date et heure gcloud.
Une extraction ultérieure doit à nouveau afficher le message :
gcloud 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 :
gcloud pubsub topics publish seek-demo-topic --message 'hello, world' gcloud 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 :
gcloud pubsub subscriptions pull seek-demo-sub
Utiliser 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.
Créer un instantané
Dans la console Google Cloud, accédez à la page Abonnements Pub/Sub.
Sélectionnez un abonnement dans la liste.
Cliquez sur Create snapshot (Créer un instantané).
Saisissez un ID pour l'instantané, puis cliquez sur Créer pour l'enregistrer.
Les instantanés peuvent être consultés sur la page des instantanés de la console Google Cloud. Vous pouvez également gérer des instantanés depuis la page des détails d'un sujet particulier :
Rouvrir un abonnement
La boîte de dialogue Rouvrir les messages vous permet de rechercher un moment antérieur dans le temps ou un instantané enregistré. Pour ouvrir la boîte de dialogue, procédez comme suit :
Dans la console Google Cloud, accédez à la page Abonnements Pub/Sub.
Sélectionnez un abonnement dans la liste.
Cliquez sur Relire les messages.
Sous Rechercher, sélectionnez Un moment antérieur ou Un instantané, puis sélectionnez le moment ou l'instantané à rechercher.
Cliquez sur Rechercher pour revoir les messages.
Comment ça s'est passé ?
Notez que des ressources et des liens supplémentaires sont disponibles sur la page d'assistance Pub/Sub.
Étape suivante
Consultez la page Rouvrir et supprimer des messages.