Como escolher o Pub/Sub ou o Cloud Tasks

Tanto o Cloud Tasks quanto o Pub/Sub podem ser usados para implementar o envio de mensagens e a integração assíncrona. Embora semelhantes, eles foram projetados para diferentes grupos de casos de uso. 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. Portanto, o Pub/Sub não oferece aos editores controle sobre a entrega das mensagens, com exceção da 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.

Já o Cloud Tasks trabalha com a invocação explícita, em que o editor tem o controle total da execução. Nesse caso, o editor especifica o endpoint em que cada mensagem será entregue.

No geral, o Cloud Tasks é adequado a casos de uso em que um produtor de tarefas precise adiar ou controlar o tempo de execução de um webhook específico ou de uma chamada de procedimento remoto. O Pub/Sub é ideal para padrões de ingestão e distribuição de dados de eventos mais gerais, em que o controle sobre a execução é reduzido.

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
Tentativas configuráveis Sim Sim
Eliminação de duplicação na criação de tarefas Sim Não
Entrega programada Sim Não
Pedido de entrega Não. A ordem de 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 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é 31 dias
Tamanho máximo da tarefa/mensagem 1 MB 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