Como usar n8n com Google Cloud Pub/Sub para ingestão de eventos: guia completo
Aprenda a integrar n8n com Google Cloud Pub/Sub para receber eventos em tempo real e automatizar fluxos sem complicação. Este guia passo a passo cobre desde a configuração do ambiente no Google Cloud até a construção de fluxos robustos no n8n, incluindo tratamento de erros, otimização de performance e boas práticas de segurança.
O que é Google Cloud Pub/Sub e por que usá-lo com n8n?
O Google Cloud Pub/Sub é um serviço de mensageria assíncrona que desacopla produtores e consumidores de eventos, ideal para sistemas que precisam escalar sem bloqueios. Diferente de webhooks tradicionais, ele garante entrega de mensagens mesmo em picos de tráfego, retendo eventos até que o consumidor esteja disponível. Use-o para automações como notificações em tempo real, processamento de logs ou disparo de ações após eventos externos.
No n8n, o Pub/Sub substitui APIs REST polling ou webhooks instáveis, pois recebe mensagens via HTTP push assim que chegam ao tópico. Um exemplo prático: uma compra no seu site gera um evento no Pub/Sub, que o n8n processa para enviar um e-mail de confirmação e registrar no Google Sheets — tudo sem código.
Curiosidade técnica: O Pub/Sub usa um modelo de "assinatura" (subscription) que permite múltiplos consumidores lerem o mesmo tópico sem conflitos, algo impossível com webhooks diretos.
Pré-requisitos: configurando o ambiente no Google Cloud
Você precisa de um projeto no Google Cloud com a API Pub/Sub ativada e uma Service Account com permissões mínimas. Siga os passos abaixo para liberar o acesso:
- Crie um projeto no Google Cloud: Acesse Google Cloud Console, clique em "Criar Projeto" e nomeie-o (ex: "n8n-pubsub-automacao").
- Habilite a API Pub/Sub: No console, vá em "APIs e Serviços" > "Biblioteca", pesquise por "Pub/Sub" e clique em "Habilitar".
- Crie uma Service Account: Em "IAM e administração" > "Service Accounts", clique em "Criar conta de serviço". Digite um nome (ex: "n8n-pubsub-reader") e atribua a role "Pub/Sub Subscriber".
- Gere e baixe a chave JSON: Na Service Account, vá em "Chaves" > "Adicionar Chave" > "Criar nova chave" (JSON). Salve o arquivo como `n8n-pubsub-key.json` — você usará ele no n8n. Documentação oficial da Service Account
Como configurar o n8n para se conectar ao Pub/Sub
No n8n, você usará o node HTTP Request para se conectar ao Pub/Sub, seja para publicar ou assinar mensagens. Veja como:
- Instale o node HTTP Request: No editor do n8n, clique em "+" > "Nodes" e pesquise por "HTTP Request". Arraste-o para o fluxo.
- Configure as credenciais: Crie uma nova credencial do tipo "Google OAuth2 API" ou "JSON" (se usar o arquivo da Service Account). Cole o conteúdo do `n8n-pubsub-key.json` no campo de autenticação.
-
Defina a URL do endpoint:
Para subscribe, use:
<code>https://pubsub.googleapis.com/v1/projects/{PROJECT_ID}/subscriptions/{SUBSCRIPTION_NAME}:pull</code> Para <strong>publish</strong>, use: <code>https://pubsub.googleapis.com/v1/projects/{PROJECT_ID}/topics/{TOPIC_NAME}:publish</code> Substitua `{PROJECT_ID}`, `{SUBSCRIPTION_NAME}` e `{TOPIC_NAME}` pelos seus valores. - Diferencie publish vs subscribe: - Publish: Envia mensagens para um tópico (ex: um evento de compra). - Subscribe: Recebe mensagens de uma assinatura (ex: processar eventos no n8n).
Exemplo de payload JSON para publish:
{
"messages": [
{
"data": "SGVsbG8gZnJvbSBudDhuIQ==",
"attributes": {
"event_type": "compra_realizada",
"user_id": "12345"
}
}
]
}
Curiosidade técnica: O Pub/Sub codifica o payload em base64 por padrão. No n8n, use Buffer.from(payload, 'utf8').toString('base64') para converter mensagens antes de publicar.
Criando um tópico e assinatura no Pub/Sub para n8n
No Google Cloud Console, você cria um tópico para enviar mensagens e uma assinatura para recebê-las no n8n. Siga o passo a passo:
- Crie um tópico: No console, vá em "Pub/Sub" > "Tópicos" > "Criar tópico". Nomeie-o (ex: `events-n8n`) e clique em "Criar".
-
Crie uma assinatura:
Em "Assinaturas", clique em "Criar assinatura". Configure:
- Nome: `n8n-subscription` (ou qualquer nome).
- Endpoint: Para push, use a URL do seu n8n (ex:
https://seu-n8n.com/webhook/pubsub). Para pull, deixe em branco e use o node HTTP Request no n8n para puxar mensagens. - Retry policy: Defina um intervalo de retentativa (ex: 10 segundos). - Configure push ou pull: - Push: O Pub/Sub envia mensagens diretamente para o endpoint do n8n (ideal para eventos imediatos). - Pull: O n8n busca mensagens periodicamente (útil para automações self-hosted com tráfego esporádico).
Tabela comparativa: Pub/Sub vs Kafka vs RabbitMQ
| Critério | Google Pub/Sub | Apache Kafka | RabbitMQ |
|---|---|---|---|
| Modelo | Assíncrono, desacoplado | Streaming de eventos | Fila de mensagens |
| Escalabilidade | Automática (Google Cloud) | Manual (clusters) | Limitada (depende de nós) |
| Custo | Pay-as-you-go (R$ 0,01 por milhão de mensagens) | Open-source (custos de infra) | Open-source (gratuito para uso básico) |
| Complexidade | Baixa (gerenciado) | Alta (configuração de clusters) | Média (depende de plugins) |
Curiosidade técnica: O Pub/Sub retém mensagens por até 7 dias por padrão. Se uma assinatura não consumir uma mensagem dentro desse período, ela é descartada automaticamente.
Construindo o fluxo de automação no n8n: recebendo eventos do Pub/Sub
Monte um fluxo no n8n com 3 nós: HTTP Request (Pub/Sub) → Processamento → Ação final. O Pub/Sub envia mensagens via push para o n8n, que processa o payload e dispara ações como e-mails ou gravações no Google Sheets. Exemplo prático: um evento de compra no e-commerce dispara uma notificação por e-mail e registra os dados no Google Sheets.
-
Node HTTP Request (Pub/Sub Push):
Configure a URL da assinatura Pub/Sub no campo "URL" do node. No n8n, use o método
POSTe cole a URL da assinatura criada. O Pub/Sub enviará mensagens automaticamente para esse endpoint. -
Node Function para decodificar payload:
Adicione um node "Function" após o HTTP Request. Use o código abaixo para decodificar o payload base64 e extrair os dados:
const payload = items[0].json.message.data; const decoded = Buffer.from(payload, 'base64').toString('utf8'); return [{ json: { ...JSON.parse(decoded), original_payload: items[0].json } }]; -
Node de ação final (ex: Send Email):
Configure o node de e-mail com os dados decodificados. Exemplo de payload recebido:
Resultado: o n8n envia um e-mail com os detalhes da compra e registra no Google Sheets.{ "message": { "data": "eyJldmVudF90eXBlIjogImNvbXBhcmlvX3JlYWxpc2FjaW8iLCAidXNlcl9pZCI6ICIxMjM0NSJ9", "attributes": { "order_id": "ORD-67890" } } }
Curiosidade técnica: O Pub/Sub envia o payload sempre em base64, mas os atributos (como order_id) chegam como texto puro no header attributes. Use items[0].json.message.attributes no n8n para acessar esses metadados sem decodificação.
Tratando erros e garantindo confiabilidade no processamento
Configure dead-letter topics no Pub/Sub e use retentativas exponenciais no n8n para mensagens que falham. Crie um fluxo paralelo que redireciona mensagens não processadas para uma fila de recuperação. Exemplo: se o Google Sheets estiver indisponível, a mensagem vai para um tópico dead-letter com até 5 retentativas.
-
Crie um dead-letter topic e subscription:
No Google Cloud Console, crie um tópico
dead-letter-eventse uma assinaturadlq-subscriptioncom retenção de 10 dias. -
Configure retentativas no n8n:
No node HTTP Request, ative a opção "Retry on Fail" e defina:
- Tentativas: 5
- Intervalo inicial: 1 segundo
- Fator exponencial: 2
- Timeout: 30 segundos
-
Fluxo de erro com Switch node:
Adicione um node "Switch" após o processamento principal. Se o status for
error, redirecione a mensagem para o node HTTP Request que publica nodead-letter-topic. Exemplo de payload de erro:{ "error": "Google Sheets API quota exceeded", "message_id": "12345" }
Curiosidade técnica: O Pub/Sub conta retentativas como tentativas de pull/push. Se uma mensagem falhar 5 vezes, ela é automaticamente enviada para o dead-letter topic — a menos que você configure a política de retentativa no nível da assinatura.
Otimizando performance: loteamento e paralelismo no n8n
Use o node SplitInBatches para processar mensagens em lotes e aproveite o paralelismo do Pub/Sub com múltiplas assinaturas. Configure o n8n para consumir até 100 mensagens por pull e processe-as em paralelo com threads. Exemplo: 1.000 mensagens chegam em 1 segundo — o n8n processa 100 de cada vez em 10 segundos.
-
Configure Pull com loteamento:
No node HTTP Request para Pub/Sub Pull, adicione o parâmetro
maxMessagesna URL:https://pubsub.googleapis.com/v1/projects/{PROJECT_ID}/subscriptions/{SUBSCRIPTION_NAME}:pull?maxMessages=100 - Adicione o node SplitInBatches: Configure o node para dividir as mensagens em lotes de 10. Isso reduz o número de requests para APIs externas (como Google Sheets).
-
Ative paralelismo no n8n:
Em "Settings" > "Execution", defina:
- Concurrency: 10 (threads paralelas)
- Batch Size: 100 (mensagens por execução)
Boas práticas para performance:
- Use Pull em vez de Push se precisar de controle sobre lotes.
- Configure ackDeadlineSeconds na assinatura para 30 segundos (padrão é 10). Isso dá mais tempo para o n8n processar mensagens grandes.
- Evite processar mensagens individualmente no n8n — use batch para reduzir custos de APIs externas.
- Monitore o backlog no Pub/Sub Console para ajustar o tamanho dos lotes.
Curiosidade técnica: O Pub/Sub Pull permite que você ajuste o maxMessages dinamicamente via código. No n8n, use uma expressão como {{ $json.maxMessages || 100 }} na URL para priorizar lotes em horários de pico.
Segurança: autenticação, IAM e boas práticas no Pub/Sub
Restrinja acessos com IAM, use Service Accounts específicas por função e rotacione chaves a cada 90 dias. Nunca use a chave de uma conta "Owner" — dê apenas as permissões mínimas necessárias (ex: roles/pubsub.subscriber para ler mensagens). A criptografia de mensagens deve ser feita antes de publicar, já que o Pub/Sub não criptografa payloads por padrão.
-
Defina permissões mínimas no IAM:
Para uma Service Account que só precisa ler mensagens, atribua a role Pub/Sub Subscriber. Para publicar, use Pub/Sub Publisher. Evite roles como
EditorouOwner. - Rotacione a chave JSON da Service Account: No Google Cloud Console, vá em "IAM e administração" > "Service Accounts" > selecione a conta > "Chaves" > "Rotacionar". Baixe a nova chave e atualize no n8n imediatamente.
-
Criptografe mensagens antes de publicar:
No n8n, use o node "Cryptography" para encriptar o payload antes de enviar ao Pub/Sub. Exemplo com AES-256:
const crypto = require('crypto'); const algorithm = 'aes-256-cbc'; const key = crypto.randomBytes(32); const iv = crypto.randomBytes(16); const cipher = crypto.createCipheriv(algorithm, key, iv); let encrypted = cipher.update(JSON.stringify(payload), 'utf8', 'hex'); encrypted += cipher.final('hex'); return [{ json: { encrypted_data: encrypted, iv: iv.toString('hex'), key: key.toString('hex') } }]; - Restrinja acesso por IP (opcional): No Google Cloud, configure uma política de firewall para permitir requests apenas do IP do seu n8n. Vá em "VPC Network" > "Firewall" > "Criar regra de firewall" e defina a origem como o IP do servidor.
Aviso crítico: Nunca exponha a chave JSON da Service Account em logs, variáveis de ambiente ou código público. Use o n8n com n8n Cloud ou self-hosted com segurança de rede reforçada.
Curiosidade técnica: O Pub/Sub valida tokens JWT no cabeçalho Authorization para autenticação. Se você usar o node HTTP Request no n8n com a opção "Google OAuth2 API", ele gera automaticamente o token com escopo https://www.googleapis.com/auth/pubsub.
Perguntas frequentes sobre Como usar n8n com Google Cloud Pub/Sub para ingestão de eventos
Como criar um projeto no Google Cloud para usar com Pub/Sub?
Acesse o Google Cloud Console, clique em "Criar Projeto", nomeie-o (ex: "n8n-pubsub-automacao") e confirme. Após criar, habilite a API Pub/Sub em "APIs e Serviços" > "Biblioteca".
Preciso pagar para usar o Google Cloud Pub/Sub com n8n?
O Google Cloud Pub/Sub tem um plano gratuito com 10GB de mensagens por mês. Acima disso, custa R$ 0,01 por milhão de mensagens. Verifique a tabela de preços na documentação oficial para detalhes.
Qual é a diferença entre tópico e assinatura no Pub/Sub?
O tópico é o canal onde as mensagens são publicadas, enquanto a assinatura define quem recebe essas mensagens. Uma assinatura pode ser configurada para push (envio automático) ou pull (busca manual).
Como testar se o Pub/Sub está enviando mensagens corretamente?
Use a ferramenta "Test" no Google Cloud Console ou publique uma mensagem manualmente via API. Verifique se o n8n recebe a mensagem no endpoint configurado ou consulte os logs da assinatura.
Posso usar o Pub/Sub com n8n self-hosted?
Sim, o Pub/Sub funciona com n8n self-hosted. Configure a assinatura para pull e use o node HTTP Request no n8n para buscar mensagens periodicamente.
Como lidar com erros de autenticação no n8n com Pub/Sub?
Verifique se a Service Account tem as permissões corretas (Pub/Sub Subscriber/Publisher) e se a chave JSON está válida. No n8n, teste a conexão com o node HTTP Request antes de prosseguir.
Qual é a melhor forma de processar mensagens em lote no n8n?
Use o node SplitInBatches para dividir mensagens em lotes menores e configure o node HTTP Request com o parâmetro maxMessages na URL (ex: ?maxMessages=100). Isso reduz o número de requests para APIs externas.
Como monitorar o consumo de mensagens no Pub/Sub?
Acesse o Google Cloud Console > Pub/Sub > Assinaturas e verifique o gráfico de backlog ou o número de mensagens não ack. Configure alertas para backlogs altos ou erros de processamento.
Do Pub/Sub ao n8n: transforme eventos em automações poderosas
Integrar n8n com Google Cloud Pub/Sub é a combinação perfeita para quem busca automações em tempo real sem complicações. Com este guia, você aprendeu a configurar ambientes, criar fluxos de trabalho escaláveis e garantir confiabilidade — tudo sem escrever código complexo. Agora, é hora de colocar em prática: publique eventos, processe-os no n8n e automatize ações como notificações, registros ou disparos de APIs.
- Pub/Sub como backbone de eventos assíncronos;
- n8n como orquestrador de automações sem código;
- Segurança com IAM e Service Accounts;
- Performance com loteamento e paralelismo;
- Confiança com dead-letter topics e retentativas.
Pronto para transformar seus eventos em automações inteligentes? Explore mais tutoriais na categoria Automação sem Código e descubra como o n8n pode simplificar ainda mais seus fluxos!
Quer mais sobre o assunto? Veja todos os artigos de Ferramentas de IA ou a lista completa de artigos.