Como escolher entre o Cloud Tasks e o Pub/Sub

O Cloud Tasks e o Pub/Sub podem ser usados para implementar a transferência de mensagens e a integração assíncrona. Apesar de esses serviços funcionarem de maneira semelhante, eles não são idênticos. Nesta página, você encontra informações úteis para escolher o produto certo para seu caso de uso.

Principais diferenças

A principal diferença entre o Pub/Sub e o Cloud Tasks está na noção de invocação implícita versus explícita.

O Pub/Sub tem o objetivo de dissociar editores de eventos e os assinantes desses eventos. Os editores não precisam saber nada sobre os assinantes. Consequentemente, o Pub/Sub não oferece aos editores controle sobre a entrega das mensagens, apenas a garantia de entrega. Dessa forma, o Pub/Sub é compatível com invocação implícita: um editor faz com que os assinantes executem de maneira implícita publicando um evento.

Por outro lado, o Cloud Tasks tem como objetivo a invocação explícita em que o editor retém o controle total da execução. Um editor especifica um endpoint para que cada mensagem deve ser entregue.

Além disso, o Cloud Tasks fornece as seguintes ferramentas para o gerenciamento de tarefas e filas, que ficam indisponíveis para os editores do Pub/Sub:

  • Programação de horários de entrega específicos
  • Controles de taxa de entrega
  • Tentativas configuráveis
  • Acesso e gerenciamento de tarefas específicas em uma fila
  • Eliminação de duplicação na criação de tarefas/mensagens

Comparação detalhada dos recursos

Recurso Cloud Tasks Cloud Pub/Sub
Push por meio de webhooks Sim Sim
Garantia de no mínimo uma entrega Sim Sim
Eliminação de duplicação na criação de tarefas Sim Não
Tentativas configuráveis Sim Não
Entrega programada Sim Não
Controles de taxa explícita Sim Não (os assinantes podem implementar o controle de fluxo)
Pull por meio de API Não Sim
Inserção de lote Não Sim
Vários gerenciadores/assinantes por mensagem Não Sim
Retenção de tarefa/mensagens 30 dias Até sete dias
Tamanho máximo da tarefa/mensagem 100 KB 10 MB
Taxa de entrega máxima 500 qps/fila Nenhum limite superior
Disponibilidade geográfica Regional Global
Duração máxima de processamento do gerenciador de push/assinante 30 minutos (HTTP)
10 minutos (escalonamento automático padrão do Google App Engine)
24 horas (escalonamento básico ou manual do App Engine Standard)
60 minutos (App Engine flexível)
10 minutos para operações de push
Número de filas/assinaturas por projeto 1.000/projeto, mais disponível via solicitação de aumento de cota 10.000/projeto