Pode usar o Cloud Tasks e o Pub/Sub para implementar a transmissão de mensagens e a integração assíncrona. Embora sejam conceitualmente semelhantes, cada uma foi concebida para um conjunto diferente de exemplos de utilização. 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 reside na 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. Por conseguinte, o Pub/Sub não dá aos publicadores controlo sobre o envio das mensagens, exceto a garantia de envio. Desta forma, o Pub/Sub suporta a invocação implícita: um publicador faz com que os subscritores sejam executados implicitamente publicando 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.
Em geral, o Cloud Tasks é adequado para exemplos de utilização em que um produtor de tarefas precisa de adiar ou controlar o tempo de execução de um webhook ou uma chamada de procedimento remoto específicos. O Pub/Sub é ideal para padrões de ingestão e distribuição de dados de eventos mais gerais, em que se pode sacrificar algum grau de controlo sobre a execução.
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 de envio |
| Número de filas/subscrições por projeto | 1000/projeto, mais disponível através do pedido de aumento da quota | 10 000/projeto |