Relire et supprimer définitivement des messages à l'aide de la fonctionnalité de recherche

Une fois que vous avez confirmé la réception des messages dans Pub/Sub, ils deviennent qui ne sont pas accessibles au client abonné. 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 les capacités des abonnés de vous permettant de modifier l'état de confirmation des messages de manière groupée. Par exemple, vous pouvez rouvrir des messages déjà confirmés ou supprimer définitivement des messages de façon groupée. De plus, vous pouvez copier l'état de confirmation d'un abonnement en utilisant la fonctionnalité de recherche associée à un instantané.

Pour une démonstration rapide du fonctionnement de ces fonctionnalités, consultez Relire un message dans Pub/Sub en recherchant un instantané ou un horodatage :

Présentation des instantanés et de la recherche

Un instantané Pub/Sub est un outil durable, cohérent et fiable vue à un moment précis de l'état de confirmation des messages d'un abonnement. Un instantané enregistre l'état de confirmation de tous les messages d'une dès sa création. Un instantané conserve le messages non confirmés de l'abonnement source au moment de la création l'instantané et tous les messages publiés dans le sujet après que l'instantané a été créé.

La durée de vie d'un instantané est déterminée par le backlog existant de la source abonnement. La durée de vie est égale à 7 jours moins l'âge du plus ancien message non confirmé dans l'abonnement. Prenons l'exemple d'un instantané un abonnement avec des tâches en attente dont le plus ancien message non confirmé date d'un jour anciens. L'instantané expire au bout de six jours. Cette chronologie est nécessaire pour les instantanés d'offrir une garantie solide de livraison d'au moins une fois.

La durée de vie maximale d'un instantané est de sept jours. Vous ne pouvez pas créer un instantané qui expire moins d'une heure après l'événement au moment de sa création.

La fonction de recherche vous permet de rechercher un instantané ou un horodatage spécifique abonnement. Cette fonctionnalité vous permet de contrôler distribuer des messages à partir d'un moment spécifique ou d'un instantané spécifique.

Pour rechercher à une heure antérieure et rouvrir les messages déjà confirmés, vous devez d'abord configurer la conservation des messages sur le sujet ou configurer l'abonnement pour conserver les messages confirmés.

Cohérence à terme des opérations de recherche

Les opérations de recherche sont strictement cohérentes en ce qui concerne la distribution des messages. garantie. Cela signifie que tout message devant devenir non confirmé sur la condition de recherche seront toujours livrées une fois l'opération de recherche réussie. Cependant, les messages distribués ne sont pas instantanément devient cohérente 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 à terme par rapport à l'opération de recherche ; cela peut prendre à moins d'une minute pour que l'opération soit pleinement effective.

Cas d'utilisation des opérations de recherche

  • 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 d'obtenir des données cohérentes 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.

Configurer la conservation des messages

Vous pouvez configurer la conservation des messages sur un sujet abonnements pour conserver les messages confirmés. Vous pouvez configurer un sujet Conservation des messages si vous souhaitez que les messages soient conservés en vue de leur relecture supérieure à la durée de conservation des messages configurée dans l'abonnement. Dans ce le projet du sujet et le projet de l'abonnement sont facturés le stockage des messages en fonction de leurs paramètres respectifs de conservation des messages.

Si la conservation des messages du sujet n'est pas configurée, un message non confirmé est supprimé de l'abonnement lorsque son ancienneté dépasse la propriété message_retention_duration de l'abonnement. En revanche, si la conservation des messages du sujet est configurée, le message non confirmé n'est supprimé de l'abonnement que lorsque son ancienneté dépasse les message_retention_duration maximales du sujet et de l'abonnement.

Configurer la conservation des messages par sujet

Par défaut, un sujet Pub/Sub ignore les messages dès qu'ils sont confirmés par tous les abonnements associés au sujet. La configuration d'un sujet avec la conservation des messages vous offre plus de flexibilité, les abonnements associés au sujet pour revenir en arrière et relancer la lecture. les messages précédemment confirmés jusqu'à message_retention_duration La conservation des messages par sujet permet également de s'abonner aux messages publiés avant la création d'un abonnement.

Un sujet peut conserver les messages publiés pendant 31 jours maximum (durée configurable par la propriété message_retention_duration du sujet), même après que tous les abonnements associés ont été confirmés. Si la message_retention_duration du sujet est supérieure à la message_retention_duration de l'abonnement, Pub/Sub supprime uniquement un message lorsque son ancienneté dépasse la message_retention_duration du sujet.

Si la conservation des messages par sujet est activée, les coûts de stockage des messages conservés par sujet sont facturés au projet du sujet.

Console

Pour créer un sujet avec la conservation des messages activée, procédez comme suit :

  1. Dans la console Google Cloud, accédez à la page Sujets Pub/Sub.

    Accéder à la page Sujets

  2. Cliquez sur Create topic (Créer un sujet).

  3. Dans le champ ID du sujet, saisissez un ID pour votre sujet.

  4. Activez l'option Définir la durée de conservation des messages.

    Conservez les paramètres par défaut pour les autres options.

  5. Dans le menu déroulant Durée de conservation des messages, sélectionnez la le nombre de jours, d'heures et de minutes de conservation des messages.

  6. Cliquez sur Créer un sujet pour enregistrer le sujet.

Pour mettre à jour les paramètres de conservation des messages d'un sujet, procédez comme suit :

  1. Sélectionnez votre sujet sur la page Sujets Pub/Sub.

    Accéder à la page Sujets

  2. Cliquez sur Modifier en haut de la page des détails.

  3. Modifiez la durée de conservation, ou activez ou désactivez la conservation des messages en en cochant ou en décochant l'option Activer la conservation des messages.

  4. Cliquez sur Mettre à jour pour enregistrer les modifications apportées au sujet.

gcloud

Pour créer un sujet avec une durée de conservation des messages de sept jours, utilisez la commande gcloud pubsub topics create suivante :

gcloud pubsub topics create TOPIC_ID --message-retention-duration=7d

Vous pouvez mettre à jour ce paramètre à l'aide de gcloud pubsub topics update. Cela vous permet également d'activer la conservation des messages pour un sujet existant :

gcloud pubsub topics update TOPIC_ID --message-retention-duration=1d

Vous pouvez également désactiver la conservation des messages pour un sujet à l'aide de la commande update :

gcloud pubsub topics update TOPIC_ID --clear-message-retention-duration

Configurer la conservation des messages concernant les abonnements

Pub/Sub commence à conserver les messages pour le compte d'un abonnement lorsque l'abonnement est créé. Par défaut, Pub/Sub supprime un message d'un abonnement dès que le message est confirmé. Les messages non confirmés sont conservés pendant une durée par défaut de 7 jours (configurable par l'élément message_retention_duration de l'abonnement ; .

Configurer un abonnement pour conserver les messages confirmés (à l'aide du retain_acked_messages ) vous permet de relire des messages précédemment confirmés. conservées par l'abonnement. Vous pouvez configurer la conservation des messages pour une durée maximale de 7 jours. Cette configuration s'applique messages confirmés et non confirmés. Toutefois, les messages peuvent être conservés de votre abonnement de plus de 7 jours si la durée de conservation des messages est supérieure à sept jours.

Si un abonnement est configuré pour conserver les messages confirmés, les coûts de stockage pour les messages confirmés conservés par l'abonnement sont facturés au dans le projet d'abonnement.

Console

Pour créer un abonnement avec la conservation des messages confirmés activés, procédez comme suit :

  1. Dans la console Google Cloud, accédez à la page Abonnements Pub/Sub.

    Accéder à la page Abonnements

  2. Cliquez sur Créer un abonnement.

  3. Dans le champ ID d'abonnement, saisissez un ID pour votre abonnement.

  4. Dans le menu déroulant Durée de conservation des messages, sélectionnez le nombre de jours, d'heures et de minutes de conservation des messages.

  5. Activez Conserver les messages confirmés. Conservez les paramètres par défaut pour les autres options.

  6. Cliquez sur Créer un abonnement pour enregistrer l'abonnement.

Pour mettre à jour les paramètres de conservation des messages d'un abonnement, procédez comme suit :

  1. Sélectionnez votre abonnement sur la page Abonnements Pub/Sub.

    Accéder à la page Abonnements

  2. Cliquez sur Modifier en haut de la page des détails de l'abonnement.

  3. Ajustez la durée de conservation des messages, ou activez ou désactivez la conservation des messages confirmés. en cochant ou en décochant le champ Conserver les messages confirmés messages.

  4. Cliquez sur Mettre à jour pour enregistrer les modifications apportées à l'abonnement.

gcloud

Pour créer un abonnement avec la conservation des messages confirmés activés, utilisez la commande gcloud pubsub subscriptions create suivante :

gcloud pubsub subscriptions create SUBSCRIPTION_ID
    --retain-acked-messages
    --message-retention-duration=5d

Vous pouvez mettre à jour ce paramètre à l'aide de gcloud pubsub subscriptions update. Cela vous permet également d'activer la conservation des messages confirmés abonnement:

gcloud pubsub subscriptions update SUBSCRIPTION_ID --message-retention-duration=1d

Vous pouvez également désactiver la conservation des messages confirmés pour un abonnement à l'aide de la commande update :

gcloud pubsub subscriptions update SUBSCRIPTION_ID --no-retain-acked-messages

Créer un instantané

Vous pouvez créer un instantané à l'aide de la console, des API Google ou du CLI Google Cloud.

Console

Pour créer un instantané, procédez comme suit:

  1. Dans Google Cloud Console, accédez à la page Instantanés.

    Accéder à la page Instantanés

  2. Cliquez sur Create snapshot (Créer un instantané).

  3. Dans le champ Sélectionner un abonnement Pub/Sub, choisissez un abonnement.

  4. Dans le champ ID de l'instantané, saisissez le nom de l'instantané.

    Pour en savoir plus sur le nom des ressources Pub/Sub, consultez la page Consignes pour nommer un sujet, un abonnement, un schéma ou un instantané

  5. Cliquez sur Créer pour créer l'instantané.

Vous pouvez également créer un instantané à partir de la page Abonnements. Si vous immédiatement après avoir créé un abonnement, vous pouvez obtenir une erreur due au délai de propagation de l'abonnement que vous venez de créer.

gcloud

Pour créer un instantané, utilisez la suivi gcloud pubsub snapshots create :

gcloud pubsub snapshots create \
    --project=PROJECT_ID \
    --subscription=SUBSCRIPTION_ID \
    SNAPSHOT_ID

Remplacez les éléments suivants :

  • PROJECT_ID Spécifie l'ID du projet.

  • SUBSCRIPTION_ID Spécifie l'ID de l'abonnement.

  • SNAPSHOT_ID Spécifie l'ID de l'instantané.

Rechercher un horodatage

Lorsque vous recherchez une heure spécifique, tous les messages reçus par 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 effectuer les types d'opérations de recherche suivants en fonction des codes temporels:

  • Pour supprimer définitivement tous les messages, vous pouvez rechercher une heure à venir.

  • Pour relire et traiter à nouveau des messages confirmés, recherchez un dans le passé.

L'heure de publication du message est générée par la Pub/Sub (voir la page publishTime dans la documentation de référence de l'API). Cette approche est imprécise pour les raisons suivantes:

  • Une variation d'horloge peut avoir lieu entre les serveurs Pub/Sub.

  • 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.

Vous pouvez rechercher un code temporel à l'aide de la console, des API Google ou du CLI Google Cloud. Avant de rechercher un code temporel sur un abonnement, Assurez-vous que la conservation des messages est activée sur l'abonnement.

Console

Pour rechercher un code temporel, procédez comme suit:

  1. Dans la console Google Cloud, accédez à la page Abonnement.

    Accéder à l'abonnement

  2. Cliquez sur un abonnement pour lequel la conservation des messages est activée.

  3. Sur la page des détails de l'abonnement, cliquez sur Relire les messages.

  4. Pour Rechercher, cliquez sur Vers un moment antérieur.

  5. Sélectionnez une date et une heure appropriées, puis cliquez sur Seek (Rechercher).

gcloud

Pour rechercher un code temporel, utilisez la fonction suivi gcloud pubsub subscriptions seek :

gcloud pubsub subscriptions seek SUBSCRIPTION_ID \
    --time=TIME \

Remplacez les éléments suivants :

  • TIME: l'heure à laquelle vous souhaitez effectuer la de recherche.
  • SUBSCRIPTION_ID: ID de l'abonnement.

Pour en savoir plus sur les formats d'heure acceptés, consultez gcloud topic datetimes

Rechercher un instantané

Vous pouvez relire les messages non confirmés à l'aide d'un instantané pour rechercher des abonnements 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.

Si les tâches en attente dans l'abonnement sont trop anciennes et que l'instantané qui en résulte expire en moins d'une heure, l'opération de recherche échoue.

Vous pouvez rechercher un instantané à l'aide de la console, des API Google ou de CLI Google Cloud.

Console

Pour rechercher un instantané, procédez comme suit:

  1. Dans la console Google Cloud, accédez à la page Abonnement.

    Accéder à l'abonnement

  2. Cliquez sur un abonnement.

  3. Sur la page des détails de l'abonnement, cliquez sur Relire les messages.

  4. Dans le champ Seek (Recherche), cliquez sur To a snapshot (vers un instantané).

  5. Sélectionnez un instantané approprié, puis cliquez sur Seek (Rechercher).

gcloud

Pour rechercher un instantané, utilisez la suivi gcloud pubsub subscriptions seek :

gcloud pubsub subscriptions seek SUBSCRIPTION_ID \
    --snapshot=SNAPSHOT_ID

Remplacez les éléments suivants :

  • SNAPSHOT_ID: ID d'un instantané. Le sujet de l'instantané doit être le même que celui de l'abonnement.
  • SUBSCRIPTION_ID: ID de l'abonnement.

Rechercher avec des filtres

Vous pouvez relire les messages des abonnements avec des filtres. Si vous recherchez un horodatage à l'aide d'un abonnement avec un filtre, le service Pub/Sub renvoie uniquement les messages correspondant au filtre.

Un instantané d'un abonnement avec un filtre contient les messages suivants :

  • Tous les messages plus récents que l'instantané, y compris ceux qui ne correspondent pas au filtre.
  • Les messages non confirmés antérieurs à l'instantané.

Si vous recherchez un instantané à l'aide d'un abonnement avec un filtre, le service Pub/Sub renvoie uniquement les messages figurant dans l'instantané et qui correspondent au filtre de l'abonnement effectuant la requête de recherche.

Pour en savoir plus sur les filtres, consultez la page Filtrer des messages.

Rechercher à l'aide de sujets de lettres mortes

Si vous recherchez des messages dans un abonnement avec un sujet de lettres mortes, Pub/Sub définit les tentatives d'envoi sur 0. Les messages que vous recevez de ces abonnements comportent un champ qui tient le compte du nombre de tentatives de distribution.

Pour plus d'informations sur les sujets de lettres mortes, consultez la page Effectuer un transfert vers des sujets de lettres mortes.

Rechercher à l'aide de règles de nouvelle tentative

Si vous recherchez des messages dans un abonnement associé à une stratégie de nouvelle tentative, Pub/Sub réinitialise le délai entre les éléments suivants :

  1. Le délai de confirmation arrive à expiration ou l'abonné envoie un accusé de réception négatif.
  2. Pub/Sub renvoie le message.

Pour plus d'informations sur les stratégies de répétition, consultez la section Utiliser des stratégies de nouvelle tentative.

Effectuer une recherche avec la diffusion de type "exactement une fois"

Si vous recherchez les messages d'un abonnement avec une distribution de type "exactement une fois", Pub/Sub renvoie les messages déjà confirmés qui sont éligibles à la livraison. Tout accusé de réception effectué avant la demande l'opération échouera. Les opérations de recherche sont cohérentes à terme.

Pour en savoir plus sur les règles de nouvelle tentative, consultez Distribution de type "exactement une fois" :