Rouvrir et supprimer des messages

Les API de données d'abonnés Cloud Pub/Sub, telles que Pull, fournissent un accès limité aux données de message. Normalement, les messages confirmés sont inaccessibles aux abonnés d'un abonnement précis. De plus, les clients abonnés doivent traiter chaque message d'un abonnement même si un seul sous-ensemble est nécessaire.

La fonctionnalité Seek étend la fonctionnalité d'abonnés en vous permettant de modifier l'état de confirmation des messages de façon groupée. Par exemple, vous pouvez rouvrir des messages confirmés ou supprimer des messages de façon groupée. De plus, vous avez la possibilité de copier l'état d'un abonnement vers un autre en utilisant la fonctionnalité Seek associée à un instantané, introduit dans le cadre de cette fonctionnalité. Sachez que la récupération des messages confirmés nécessite généralement la configuration préalable de l'abonnement source et entraîne des frais de stockage supplémentaires.

Ces fonctionnalités sont décrites ci-dessous. Vous pouvez toutefois consulter le guide de démarrage rapide pour découvrir un exemple de cas d'utilisation.

Fonctionnement

Rechercher un horodatage

Lorsque vous recherchez une heure spécifique, tous les messages reçus par Cloud Pub/Sub avant cette heure sont marqués comme confirmés. De même, l'ensemble des messages reçus après cette heure sont marqués comme non confirmés. Vous pouvez rechercher une heure future pour supprimer des messages. Pour rouvrir et traiter à nouveau les messages confirmés, recherchez une heure antérieure. L'heure de publication du message est générée par les serveurs Cloud Pub/Sub. Pour en savoir plus, consultez la page relative à publishTime dans la documentation de référence de l'API. Sachez que cette approche est imprécise, car une variation d'horloge peut avoir lieu entre les serveurs Cloud Pub/Sub, et parce que Cloud Pub/Sub doit fonctionner en se basant sur l'heure d'arrivée de la requête de publication plutôt que sur le moment où un événement s'est produit dans le système source.

Pour rechercher une heure antérieure, vous devez d'abord configurer votre abonnement afin de conserver les messages confirmés :

  • Un message confirmé n'est conservé dans un abonnement que si la propriété retain_acked_messages de cet abonnement est définie sur "true" (la valeur par défaut étant "false"), au maximum pendant la durée de conservation des messages (message_retention_duration) définie après sa publication (la valeur par défaut étant sept jours). Les messages confirmés ne sont conservés que s'ils sont confirmés une fois la propriété retain_acked_messages de l'abonnement définie sur true.
  • Un message non confirmé est conservé dans un abonnement au maximum pendant la durée de conservation des messages (message_retention_duration) définie après sa publication (la valeur par défaut étant sept jours).
  • Les propriétés retain_acked_messages et message_retention_duration d'un abonnement peuvent être spécifiées lors de la création de l'abonnement ou mises à jour pour un abonnement existant.

Rechercher un instantané

La fonctionnalité d'instantané vous permet d'enregistrer l'état de confirmation des messages d'un abonnement. Une fois un instantané créé, il conserve tous les messages non confirmés qui se trouvent dans l'abonnement source (au moment de la création de l'instantané), ainsi que tous les messages publiés par la suite dans le sujet. Vous pouvez rouvrir ces messages non confirmés à l'aide d'un instantané pour rechercher des abonnements associés au sujet.

Contrairement à la recherche d'une heure, vous n'avez pas besoin de configurer spécialement un abonnement pour rechercher un instantané. Vous devez simplement créer l'instantané à l'avance. Par exemple, vous pouvez créer un instantané lors du déploiement d'un nouveau code d'abonnés, au cas où vous auriez besoin de récupérer des accusés de réception inattendus ou erronés.

Les instantanés expirent et sont supprimés dans les cas suivants, selon la première éventualité :

  • L'instantané a atteint une durée de vie de sept jours.
  • Le plus ancien message non confirmé dans l'instantané dépasse la durée définie (message retention duration).

Prenons pour exemple un instantané d'un abonnement dont le plus ancien message non confirmé en attente date d'une journée. L'instantané expirera donc au bout de six jours au lieu de sept. Cette suppression est nécessaire pour permettre aux instantanés d'assurer une distribution fiable des messages au moins une fois.

Cohérence dans le temps

Les opérations de recherche sont strictement cohérentes avec les garanties de distribution des messages. Cela signifie que tout message non confirmé en fonction de la condition de recherche est assuré d'être distribué au moins une fois après la réussite de l'opération de recherche. Toutefois, cela ne signifie pas que les messages distribués deviennent immédiatement cohérents avec l'opération de recherche. Ainsi, un message qui a été publié avant l'horodatage de recherche ou confirmé dans un instantané peut toujours être distribué après l'opération de recherche. En un sens, la distribution des messages fonctionne comme un système cohérent dans le temps en ce qui concerne l'opération de recherche : cette dernière peut demander jusqu'à une minute pour prendre entièrement effet.

Cas d'utilisation

  • Mettre à jour le code d'abonnés en toute sécurité. Lors du déploiement du nouveau code d'abonnés, l'une des craintes est que le nouvel exécutable puisse confirmer la réception de messages par erreur, ce qui entraînerait une perte de messages. L'intégration d'instantanés dans votre processus de déploiement vous permet de résoudre des bugs dans le nouveau code d'abonnés.
  • Résoudre des problèmes d'abonné inattendus. Dans les cas où les problèmes d'abonnés ne sont pas associés à un événement de déploiement spécifique, il est possible que vous ne disposiez pas d'un instantané pertinent. Dans ce cas, si vous avez activé la conservation des messages confirmés pour un abonnement, la recherche d'une heure passée vous permet de résoudre l'erreur.
  • Économiser du temps et des coûts de traitement. Accusez réception des nombreux messages en attente de façon groupée, si ceux-ci ne sont plus pertinents.
  • Tester le code d'abonnés sur des données connues. Lorsque vous testez les performances et la cohérence du code d'abonnés, il est utile de se servir des mêmes données à chaque exécution. Les instantanés permettent cette action grâce une sémantique forte. Ils peuvent également être appliqués à n'importe quel abonnement associé à un sujet donné, y compris un nouvel abonnement.

Étapes suivantes

Vous pouvez utiliser Cloud Pub/Sub avec Cloud Dataflow. Nous vous déconseillons toutefois d'accéder directement à la fonctionnalité Seek de Cloud Pub/Sub depuis un pipeline Cloud Dataflow en cours d'exécution. Pour connaître le workflow recommandé, consultez la page Utiliser Seek de Cloud Pub/Sub avec Cloud Dataflow.

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

Envoyer des commentaires concernant…

Documentation sur Cloud Pub/Sub