Cloud Tasks et Pub/Sub peuvent être utilisés pour la transmission de messages et l'intégration asynchrone. Toutefois, bien qu'ils fonctionnent de manière similaire, ils diffèrent sur quelques points. Ce guide vous aide à choisir le produit adapté à votre cas d'utilisation.
Différences majeures
Pub/Sub et Cloud Tasks diffèrent principalement selon qu'ils utilisent un appel implicite ou explicite.
Pub/Sub dissocie les éditeurs d'événements de leurs abonnés. Les éditeurs n'ont pas besoin de connaître leurs abonnés. Par conséquent, Pub/Sub n'offre aucun contrôle sur la distribution des messages, au-delà de la garantie de distribution. Cela prend en charge l'appel implicite : un éditeur déclenche l'exécution de l'abonné simplement en publiant un événement.
En revanche, Cloud Tasks vise un appel explicite. L'éditeur conserve 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 plus, Cloud Tasks fournit des outils pour la gestion des files d'attente et des tâches qui ne sont pas disponibles pour les éditeurs Pub/Sub. Certaines de ces fonctionnalités sont répertoriées ci-dessous :
- Planification de distribution spécifique
- Contrôles des rythmes de distribution
- Nouvelles tentatives configurables précises
- Consultation et gestion de tâches individuelles dans une file d'attente
- Déduplication de la création de tâches
Comparatif détaillé des fonctionnalités
| Fonctionnalité | Cloud Tasks | Pub/Sub |
|---|---|---|
| Envoi à l'aide de webhooks | Oui | Oui |
| Garantie de distribution de type "au moins une fois" | Oui | Oui |
| Nouvelles tentatives configurables | Oui | Oui |
| Déduplication de la création de tâches/messages | Oui | Non |
| Planification de la distribution | Oui | Non |
| Distribution ordonnée | Non, l'ordre des tâches mises en file d'attente est conservé au mieux | Oui, avec des clés de tri |
| Contrôles des rythmes explicites | Oui | Les clients abonnés extracteurs peuvent implémenter le contrôle de flux |
| Extraction à l'aide de l'API | Non | Oui |
| Insertion de lots | Oui | Oui |
| Plusieurs gestionnaires/abonnés par message | Non | Oui |
| Conservation des tâches/messages | 31 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, sous réserve des quotas de débit régionaux |
| 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 | 1 000 par projet et par région, ou plus via les demandes d'augmentation de quota | 10 000 par projet |
Différences de configuration des nouvelles tentatives
Cloud Tasks offre un contrôle précis des nouvelles tentatives de tâches, y compris des limites strictes sur les tentatives et la durée. Pub/Sub se concentre sur la distribution fiable, en utilisant un intervalle exponentiel entre les tentatives et des files d'attente de lettres mortes (DLQ) pour gérer les nouvelles tentatives pour les messages non confirmés.
| Fonctionnalité | Cloud Tasks | Pub/Sub |
|---|---|---|
| Priorité du cas d'utilisation | Garantir l'exécution finale d'une tâche spécifique | Garantir la distribution des messages aux abonnés dissociés |
| Contrôle principal | Configuration des nouvelles tentatives au niveau de la file d'attente et de la tâche | Stratégie de nouvelle tentative et DLQ au niveau de l'abonnement |
| Arrêt des nouvelles tentatives | Nombre maximal de tentatives, durée maximale des nouvelles tentatives | Confirmation du message, expiration du message ou transfert DLQ |
| Nombre maximal de tentatives | Configurable de manière explicite | Indirectement via le nombre maximal de tentatives de distribution DLQ |
| Optimisation de l'intervalle entre les tentatives | Intervalle minimal/maximal entre les tentatives, nombre maximal de doublements | Intervalle minimal/maximal entre les tentatives pour la stratégie d'intervalle exponentiel entre les tentatives |
| Nouvelles tentatives indéfinies | Possible si configuré, mais limité par la limite maximale de conservation des tâches | Par défaut pour les messages non confirmés jusqu'à expiration, atténué par la DLQ |
Étape suivante
- Configurer le routage, les limites et les nouvelles tentatives des files d'attente
- Gérer les files d'attente et les tâches
- Définir les paramètres de nouvelle tentative pour une tâche
- Déduplication de tâches