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 para entrega | Não. A ordem das tarefas na fila é preservada com base no melhor esforço. | Sim, com chaves de pedido |
Controles de taxa explícita | Sim | Os clientes de assinante pull podem implementar 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 |