Perguntas frequentes

Perguntas gerais

O Pub/Sub está relacionado ao Firebase Cloud Messaging (FCM) ou ao Google Cloud Messaging (GCM)?

Sim e não. Esses sistemas são usados para entregar mensagens, mas o FCM é usado para entregar mensagens de e para dispositivos de usuários finais, enquanto o Pub/Sub é usado na comunicação entre servidores. O FCM foi projetado para escalonamento com um grande número de endpoints de entrega, mas tem baixa capacidade (mensagens por segundo por canal). O Pub/Sub não tem limites de capacidade e tem uma API mais genérica.

Ele está relacionado ao PubSubHubbub (em inglês)?

Não. Embora os Googlers estivessem envolvidos na criação do PubSubHubbub, os pontos fortes dele são RSS e distribuição de conteúdo, que geralmente não são casos em que o Pub/Sub possa ser aplicado. Além do nome, eles têm pouco em comum.

Posso usar o Pub/Sub para comunicação entre diferentes módulos do App Engine?

Sim. O Pub/Sub pode ser usado para enviar e receber mensagens entre diferentes módulos em um aplicativo do App Engine, e mesmo entre diferentes aplicativos no mesmo projeto, sem nenhuma configuração de ACL especial. Para ter uma publicação de baixa latência, armazene em cache o cliente do editor, inicializando-o como uma variável global.

Posso usar o Pub/Sub com plataformas diferentes do App Engine?

Sim. O Cloud Pub/Sub pode ser usado com aplicativos hospedados no Google Compute Engine ou até em plataformas que não são do Google. Para começar, você só precisa de um projeto do Console do Google Cloud. Para ter uma publicação de baixa latência, armazene em cache o cliente do editor tornando-o uma variável global.

Como posso conectar os aplicativos do App Engine e do Compute Engine?

Use a entrega por push para mensagens de baixa latência do Compute Engine para o App Engine. Use a entrega por pull para enviar dados do App Engine para um grande número de assinantes do Compute Engine.

Como posso monitorar as métricas do Pub/Sub?

Consulte este artigo.

O Pub/Sub é integrado ao Cloud KMS?

Sim. Os tópicos do Pub/Sub podem ser configurados para proteger o conteúdo da mensagem usando uma chave no Cloud KMS. Para mais informações, consulte Como usar chaves de criptografia gerenciadas pelo cliente.

Perguntas técnicas

As mensagens são entregues na ordem?

O Pub/Sub não garante a entrega na ordem nem "primeira a chegar, primeira a sair" (FIFO, na sigla em inglês). As mensagens são entregues o mais rápido possível, com preferência para as mais antigas, mas não há garantia disso. O ordenamento rígido está em desacordo com as garantias de disponibilidade e escalabilidade do Pub/Sub. Acesse Como ordenar mensagens para ver a discussão detalhada sobre esse tópico.

Por que estou recebendo erros de cota se meu uso está bem abaixo dos limites?

As cotas são aplicadas no projeto associado ao cliente autenticado, conforme explicado em Cotas e limites. Verifique se você está usando uma conta de serviço ou uma API_KEY associada a um projeto com cotas suficientes. Especificamente a linha de comando gcloud usa um projeto compartilhado e as cotas são muito limitadas.

Por que há tantas mensagens duplicadas?

O Pub/Sub garante a entrega da mensagem pelo menos uma vez, o que significa que mensagens duplicadas podem ser enviadas às vezes. No entanto, uma alta taxa de mensagens duplicadas pode indicar que o cliente não está confirmando as mensagens no ack_deadline_seconds, o que faz com que o Pub/Sub fique tentando entregar a mensagem novamente. Isso pode ser observado nas métricas de monitoramento pubsub.googleapis.com/subscription/pull_ack_message_operation_count para assinaturas de pull e pubsub.googleapis.com/subscription/push_request_count para assinaturas de push. Procure por valores elevados de expired ou webhook_timeout no /response_code. Isso tem maior probabilidade de acontecer quando há muitas mensagens pequenas, já que o Pub/Sub pode enviar mensagens em lote internamente e um lote parcialmente confirmado será totalmente reenviado.

Outra possibilidade é que o assinante não esteja confirmando algumas mensagens devido a falha no caminho do código que realiza o processamento delas, o que impede que a chamada Acknowledge seja feita. Ou talvez o endpoint de push nunca responda ou responda com erro.

Como detectar mensagens duplicadas?

O Pub/Sub atribui um `message_id` exclusivo para cada mensagem, que pode ser usado para detectar mensagens duplicadas recebidas pelo assinante. No entanto, isso não permitirá detectar duplicatas resultantes de várias solicitações de publicação para os mesmos dados. Essa detecção exige um identificador de mensagem exclusivo a ser fornecido pelo editor. Consulte E/S do Pub/Sub para mais detalhes.