O Cloud Tasks e o Pub/Sub podem ser usados para implementar a transmissão de mensagens e a integração assíncrona, mas, embora funcionem de formas semelhantes, não são idênticos. Esta página ajuda a escolher o produto certo para o seu exemplo de utilização.
Principais diferenças
A principal diferença entre o Pub/Sub e o Cloud Tasks é a noção de invocação implícita vs. explícita.
O Pub/Sub tem como objetivo separar os publicadores de eventos e os subscritores desses eventos. Os publicadores não precisam de saber nada sobre os respetivos subscritores. Como resultado, o Pub/Sub não dá aos publicadores controlo sobre a entrega das mensagens, exceto a garantia de entrega. Desta forma, o Pub/Sub suporta a invocação implícita: um publicador faz com que os subscritores sejam executados implicitamente através da publicação de um evento.
Por outro lado, o Cloud Tasks destina-se à invocação explícita, em que o publicador mantém o controlo total da execução. Em particular, um publicador especifica um ponto final onde cada mensagem deve ser entregue.
Além disso, o Cloud Tasks oferece ferramentas para gestão de filas e tarefas indisponíveis para publicadores do Pub/Sub, incluindo:
- Agendar horas de entrega específicas
- Controlos da taxa de fornecimento
- Voltas a tentar configuráveis
- Acesso e gestão de tarefas individuais numa fila
- Deduplicação da criação de tarefas/mensagens
Comparação detalhada de funcionalidades
| Funcionalidade | Cloud Tasks | Cloud Pub/Sub |
|---|---|---|
| Envie através de webhooks | Sim | Sim |
| Garantia de entrega pelo menos uma vez | Sim | Sim |
| Voltas a tentar configuráveis | Sim | Sim |
| Deduplicação da criação de tarefas | Sim | Não |
| Envio agendado | Sim | Não |
| Entrega pedida | Não. A ordem das tarefas na fila é preservada com base no melhor esforço. | Sim, com teclas de ordenação |
| Controlos de taxa explícitos | Sim | Os clientes de subscrição de obtenção podem implementar o controlo de fluxo |
| Extraia através da API | Não | Sim |
| Inserção em lote | Não | Sim |
| Vários controladores/subscritores por mensagem | Não | Sim |
| Retenção de tarefas/mensagens | 30 dias | Até 31 dias |
| Tamanho máximo da tarefa/mensagem | 1MB | 10MB |
| Taxa de fornecimento máxima | 500 qps/fila | Sem limite superior |
| Disponibilidade geográfica | Regional | Global |
| Duração máxima do processamento do controlador/subscritor de envio | 30 minutos (HTTP) 10 minutos (dimensionamento automático do App Engine Standard) 24 horas (dimensionamento manual ou básico do App Engine Standard) 60 minutos (App Engine Flexible) |
10 minutos para operações push |
| Número de filas/subscrições por projeto | 1000/projeto, mais disponível através do pedido de aumento da quota | 10 000/projeto |