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.
| Recurso | Cloud Tasks | Pub/Sub |
|---|---|---|
| Foco do caso de uso | Garantir a execução eventual de uma tarefa específica | Garantir a entrega de mensagens a assinantes separados |
| Controle principal | Configuraçã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 tentativas | Nú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 tentativas | Configurável explicitamente | Indiretamente, pelo número máximo de tentativas de entrega da DLQ |
| Ajuste de espera | Espera mínima/máxima, número máximo de duplicações | Espera mínima/máxima para política de espera exponencial |
| Novas tentativas indefinidas | Possí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
- Configurar o roteamento, os limites e as novas tentativas de filas
- Gerenciar filas e tarefas
- Definir parâmetros de novas tentativas para uma tarefa
- Eliminação de duplicação de tarefas