Escolher o Cloud Tasks ou 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. Este guia ajuda você a escolher o produto certo para seu caso de uso.

principais diferenças

O Pub/Sub e o Cloud Tasks diferem principalmente quanto ao uso de invocação implícita ou explícita.

O Pub/Sub separa os editores de eventos dos assinantes. Os editores não precisam saber nada sobre os assinantes. Como resultado, o Pub/Sub não oferece controle sobre a entrega de mensagens, apenas a garantia de entrega. Isso oferece suporte à invocação implícita: um editor aciona a execução do assinante apenas publicando um evento.

Por outro lado, o Cloud Tasks tem como objetivo a invocação explícita. O editor mantém o controle total da execução. Nesse caso, o editor especifica o endpoint em que cada mensagem 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 entrega específica
  • Controles de taxa de entrega
  • Novas tentativas configuráveis precisas
  • Acesso e gerenciamento de tarefas específicas em uma fila
  • Eliminação de duplicação na criação de tarefas

Comparação detalhada dos recursos

Recurso Cloud Tasks Pub/Sub
Push usando webhooks Sim Sim
Garantia de entrega de pelo menos uma vez Sim Sim
Novas tentativas configuráveis Sim Sim
Eliminação de duplicação na criação de tarefas/mensagens Sim Não
Entrega programada Sim Não
Entrega ordenada Não, a ordem das tarefas enfileiradas é preservada da melhor maneira possível Sim, com chaves de ordenação
Controles de taxa explícita Sim Os clientes assinantes de pull podem implementar o controle de fluxo
Pull usando a API Não Sim
Inserção de lote Sim Sim
Vários gerenciadores/assinantes por mensagem Não Sim
Retenção de tarefa/mensagens 31 dias Até 31 dias
Tamanho máximo da tarefa/mensagem 1MB 10MB
Taxa de envio máxima 500 QPS/fila Sem limite máximo, sujeito a cotas de capacidade de processamento regional
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 1.000 por projeto por região, mais disponíveis por solicitação de aumento de cota 10.000 por projeto

Diferenças de novas tentativas configuráveis

O Cloud Tasks oferece controle preciso das novas tentativas de tarefas, incluindo limites firmes de tentativas e duração. O Pub/Sub se concentra na entrega confiável, usando filas de espera exponencial e de mensagens inativas (DLQ, na sigla em inglês) para gerenciar novas tentativas de mensagens não confirmadas.

RecursoCloud Tasks Pub/Sub
Foco do caso de usoGarantir a execução eventual de uma tarefa específica Garantir a entrega de mensagens a assinantes separados
Controle principalConfiguração de novas tentativas no nível da fila e da tarefa Política de novas tentativas e DLQ no nível da assinatura
Como interromper novas tentativasNúmero máximo de tentativas, duração máxima de novas tentativas Confirmação de mensagens, expiração de mensagens ou transferência de DLQ
Número máximo de tentativasConfigurável explicitamente Indiretamente, pelo número máximo de tentativas de entrega da DLQ
Ajuste de esperaEspera mínima/máxima, número máximo de duplicações Espera mínima/máxima para política de espera exponencial
Novas tentativas indefinidasPossível se configurado, mas limitado pelo limite máximo de retenção de tarefas Padrão para mensagens não confirmadas até a expiração, atenuado pela DLQ

A seguir