Migrer des files d'attente de retrait vers Pub/Sub

Cette page explique comment migrer le code de files d'attente de retrait depuis les files d'attente de tâches vers Pub/Sub. Pub/Sub est désormais la méthode privilégiée pour effectuer des tâches de file d'attente de retrait dans App Engine.

Si votre application utilise à la fois des files d'attente de retrait et des files d'attente d'envoi, utilisez ce guide pour migrer vos files d'attente de retrait vers Pub/Sub avant de migrer vos files d'attente d'envoi vers le nouveau service de files d'attente d'envoi Cloud Tasks. La migration des files d'attente de retrait après celle des files d'attente d'envoi vers Cloud Tasks n'est pas recommandée, car l'utilisation obligatoire du fichier queue.yaml est susceptible de provoquer un comportement inattendu avec Cloud Tasks.

Fonctionnalités actuellement indisponibles dans Pub/Sub

Les fonctionnalités de files d'attente de tâches suivantes ne sont actuellement pas disponibles dans Pub/Sub :

  • Traitement par lots à l'aide de tags
  • Déduplication automatique

Tarifs et quotas

Migrer des files d'attente de retrait vers Pub/Sub peut avoir une incidence sur les tarifs et les quotas de votre application.

Prix

Pub/Sub possède sa propre grille tarifaire. Comme pour les files d'attente de tâches, l'envoi de requêtes à votre application App Engine avec Pub/Sub peut entraîner des frais pour votre application.

Quota

Les quotas Pub/Sub sont différents de ceux des files d'attente de tâches. Comme pour les files d'attente de tâches, l'envoi de requêtes à votre application App Engine à partir de Pub/Sub peut avoir un impact sur vos quotas de requêtes App Engine.

Avant la migration

Cette section explique ce que vous devez faire avant de migrer vos files d'attente d'envoi vers Pub/Sub.

Activer l'API Pub/Sub

Pour activer l'API Pub/Sub, cliquez sur Activer sur l'API Pub/Sub dans la bibliothèque d'API. Si un bouton Gérer s'affiche au lieu du bouton Activer, cela signifie que vous avez précédemment activé l'API Pub/Sub pour votre projet et que vous n'avez pas besoin de le faire à nouveau.

Authentifier votre application auprès de l'API Pub/Sub

Vous devez authentifier votre application auprès de l'API Pub/Sub. Cette section traite de l'authentification pour deux cas d'utilisation différents.

Pour développer ou tester votre application localement, nous vous recommandons d'utiliser un compte de service. Pour obtenir des instructions sur la configuration d'un compte de service et le connecter à votre application, consultez la section Obtenir et fournir manuellement les identifiants du compte de service.

Pour déployer votre application sur App Engine, vous n'avez pas besoin de fournir une nouvelle authentification. Les identifiants par défaut de l'application déduisent les informations d'authentification pour les applications App Engine.

Télécharger le SDK Cloud

Si ce n'est déjà fait, téléchargez et installez le SDK Cloud pour utiliser l'outil gcloud avec l'API Pub/Sub. Exécutez la commande suivante depuis votre terminal si vous avez déjà installé le SDK Cloud.

gcloud components update

Importer la bibliothèque cliente pour Java

Suivez les instructions Pub/Sub pour installer la bibliothèque cliente afin de l'utiliser avec votre application.

Pub/Sub et files d'attente de retrait

Comparatif des fonctionnalités

Pub/Sub envoie des tâches aux nœuds de calcul via une relation éditeur/abonné. Un abonnement pull dans Pub/Sub fonctionne comme une file d'attente de retrait dans les files d'attente de tâches, car l'abonné extrait le message du sujet. Le tableau ci-dessous répertorie les principales fonctionnalités de files d'attente de retrait dans les files d'attente de tâches, ainsi que la fonctionnalité associée aux abonnements pull dans Pub/Sub.

Fonctionnalité de files d'attente de tâches Fonctionnalité Pub/Sub
Queue Sujet
Tâche Message
Nœud de calcul Abonné

Pour en savoir plus sur l'architecture de Pub/Sub, consultez la page Cloud Pub/Sub : un service de messagerie à l'échelle de Google.

Comparaison des workflows

Vous trouverez ci-dessous une comparaison entre un workflow classique pour une file d'attente de retrait dans les files d'attente de tâches et celui d'un abonnement pull dans Pub/Sub.

Workflow de files d'attente de tâches Workflow Pub/Sub
Vous créez la file d'attente de retrait. Vous créez le sujet et effectuez la souscription de votre abonné (le nœud de calcul) au sujet.
Vous créez la tâche et la placez en file d'attente. Vous créez le message et le publiez dans le sujet.
Le nœud de calcul loue la tâche. L'abonné extrait le message du sujet.
Le nœud de calcul traite la tâche. L'abonné traite le message.
Le nœud de calcul supprime la tâche de la file d'attente. L'abonné reconnaît le message.
Le bail expire. Le sujet supprime le message lorsque tous ses abonnés ont accusé réception du message.

Créer des abonnements pull dans Pub/Sub

Vous pouvez utiliser un abonnement pull Pub/Sub de la même façon qu'une file d'attente de retrait des files d'attente de tâches. Les abonnements à un sujet n'expirent pas et peuvent coexister pour plusieurs nœuds de calcul. Cela signifie qu'un message peut être traité par plusieurs nœuds de calcul, ce qui constitue l'un des principaux cas d'utilisation de Pub/Sub. Pour recréer vos files d'attente de retrait de files d'attente de tâches sous la forme d'abonnements pull Pub/Sub, créez un sujet pour chaque nœud de calcul et n'abonnez que celui qui est associé au sujet. Cela garantit que chaque message sera traité par un seul nœud de calcul, comme dans les files d'attente de tâches. Pour en savoir plus sur la création et la gestion des abonnements pull, consultez la page Gérer les sujets et les abonnements.

Supprimer des files d'attente de retrait

Après avoir migré vos files d'attente de retrait de files d'attente de tâches vers des abonnements pull Pub/Sub, supprimez-les des files d'attente de tâches à l'aide de votre fichier queue.yaml. Nous vous recommandons de supprimer chaque file d'attente de retrait avant de migrer la suivante. Cela évite que votre application duplique le travail reçu du nouvel abonnement pull Pub/Sub pendant que vous migrez vos autres files d'attente de retrait. Notez que la suppression des files d'attente de retrait des files d'attente de tâches une à une plutôt qu'au moyen d'un seul déploiement peut avoir un impact plus élevé sur votre quota de déploiement App Engine.

Une fois que vous avez supprimé toutes les files d'attente de retrait des files d'attente de tâches, vous pouvez omettre le fichier queue.yaml lors des futurs déploiements de votre application.

Si votre application n'utilise que des files d'attente de retrait, supprimez toutes les références à l'API Task Queues dans votre code. Si votre application utilise à la fois des files d'attente de retrait et des files d'attente d'envoi, vous pouvez supprimer les références à l'API Task Queues présentes dans les fichiers qui n'utilisent que les files d'attente de retrait, ou attendre d'avoir également migré vos files d'attente d'envoi pour supprimer ces références de tous les fichiers.

Étape suivante