Tanto Cloud Tasks quanto 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 | Pub/Sub |
|---|---|---|
| Push usando webhooks | Sim | Sim |
| Garantia de uma entrega no mínimo | Sim | Sim |
| 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 | Nenhum limite superior, 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ível por solicitação de aumento de cota | 10.000 por projeto |