Choisir Pub/Sub ou Cloud Tasks

Cloud Tasks et Pub/Sub peuvent tous deux être utilisés pour implémenter la transmission de messages et l'intégration asynchrone. Bien qu'ils soient conceptuellement similaires, chaque service est conçu pour différents ensembles de cas d'utilisation. Cette page vous aide à choisir la meilleure option en fonction de votre cas d'utilisation.

Différences majeures

La principale différence entre Pub/Sub et Cloud Tasks réside dans la notion d'appel implicite et explicite.

Pub/Sub tend à dissocier les éditeurs d'événements et les abonnés à ces événements. Les éditeurs n'ont pas besoin de savoir quoi que ce soit sur leurs abonnés. Par conséquent, Pub/Sub ne donne aux éditeurs aucun contrôle sur la distribution des messages, à l'exception de la garantie de livraison. Ainsi, Pub/Sub propose un appel implicite : un éditeur encourage implicitement les abonnés à l'exécution en publiant un événement.

En revanche, Cloud Tasks implique un appel explicite, qui permet à l'éditeur de conserver le contrôle total de l'exécution. Plus spécifiquement, l'éditeur définit un point de terminaison indiquant l'emplacement de distribution de chaque message.

De manière générale, Cloud Tasks convient aux cas d'utilisation dans lesquels un producteur de tâches doit différer ou contrôler le temps d'exécution d'un appel webhook ou d'une procédure distante spécifique. Pub/Sub est optimal pour des schémas plus généraux d'ingestion et de distribution de données d'événements, dans lesquels un certain contrôle sur l'exécution peut être sacrifié.

Comparatif détaillé des fonctionnalités

Caractéristique Cloud Tasks Cloud Pub/Sub
Envoi via webhooks Oui Oui
Garantie de distribution de type "au moins une fois" Oui Oui
Configuration des nouvelles tentatives d'exécution Oui Oui
Déduplication de la création de tâches Oui Non
Planification de la distribution Oui Non
Livraison commandée Non. L'ordre des tâches en file d'attente est conservé dans la mesure du possible. Oui avec les clés de tri
Contrôles des rythmes explicites Oui Les clients abonnés en mode pull peuvent implémenter le contrôle de flux.
Extraction via l'API Non Oui
Insertion de lots Non Oui
Plusieurs gestionnaires/abonnés par message Non Oui
Conservation des tâches/messages 30 jours Jusqu'à 31 jours
Taille maximale des tâches/messages 1 Mo 10 Mo
Rythme de distribution maximal 500 RPS par file d'attente Pas de limite supérieure
Disponibilité géographique Régionale Monde
Durée maximale du traitement push gestionnaire/abonné 30 minutes (HTTP)
10 minutes (scaling automatique standard App Engine)
24 heures (scaling manuel ou de base standard App Engine)
60 minutes (environnement flexible App Engine)
10 minutes pour les opérations push
Nombre de files d'attente/d'abonnements par projet 1 000 par projet, ou plus via les demandes d'augmentation de quota 10 000 par projet