Ir para o conteúdo

Publicar e receber mensagens do Google Pub/Sub no Jitterbit Studio

Introdução

Google Cloud Pub/Sub é um serviço de mensagens gerenciado que desacopla sistemas ao rotearem mensagens através de tópicos e assinaturas. Um publicador escreve mensagens em um tópico; um ou mais assinantes recebem essas mensagens através de assinaturas vinculadas a esse tópico.

O conector Google Pub/Sub fornece atividades para ambos os lados desse padrão:

  • Publicação: Use a atividade Publicar Mensagem para escrever mensagens em um tópico Pub/Sub a partir de uma operação do Studio, por exemplo, quando um registro é criado em um sistema de origem e serviços a jusante precisam ser notificados.
  • Recepção: Use a atividade Obter Mensagem para consultar uma assinatura em busca de mensagens pendentes, em seguida, use a atividade Reconhecer Mensagem para confirmar que cada mensagem foi processada.

Este guia cobre ambos os padrões. Para consumo de mensagens orientado a eventos (onde o Studio escuta continuamente em vez de consultar), consulte a referência da Atividade Ouvir Mensagem, que requer um cluster de agente privado com configuração de rede específica.

Este guia assume o seguinte:

  • Uma conta de serviço do Google Cloud com a API Pub/Sub habilitada e funções apropriadas atribuídas, conforme descrito nos pré-requisitos do Google Pub/Sub.
  • O tópico e a assinatura já existem no Google Pub/Sub.

Parte 1: Configurar a conexão do Google Pub/Sub

  1. No Studio, abra seu projeto e vá para a aba Endpoints e conectores do projeto na paleta de componentes de design.

  2. Clique no conector Google Pub/Sub para abrir a configuração da conexão.

  3. Nome da Conexão: Insira um nome único (por exemplo, Google Pub/Sub). O nome não pode conter barras ou dois-pontos.

  4. ID do Projeto: Insira o valor project_id do arquivo JSON de credenciais da conta de serviço.

  5. Email do Cliente: Insira o valor client_email do arquivo JSON de credenciais.

  6. String da Chave Privada: Insira o valor private_key do arquivo JSON de credenciais, formatado como:

    -----BEGIN PRIVATE KEY-----<private_key>-----END PRIVATE KEY-----
    

    Nota

    O valor private_key no arquivo JSON usa \n para representar quebras de linha. Substitua cada \n por um retorno de carro real antes de colar neste campo. Se a chave for colada com caracteres \n literais, o teste de conexão retorna um erro Dados PKCS#8 inválidos.

  7. Clique em Testar para verificar a conexão.

  8. Clique em Salvar Alterações.

Parte 2: Publicar uma mensagem em um tópico

A atividade Publicar Mensagem é uma atividade de destino. Use-a ao final de uma transformação para escrever dados como uma mensagem em um tópico Pub/Sub.

Padrão de Design

flowchart LR A[Atividade de origem] --> B[Transformação] --> C[Atividade Publicar Mensagem]

A operação começa com uma atividade de origem que fornece os dados a serem publicados. Isso pode ser qualquer atividade que retorne dados, como uma atividade de Consulta de banco de dados ou Salesforce, uma fonte de arquivo ou a resposta de outro conector. A transformação em Passo 2 mapeia esses dados de origem na solicitação Publicar Mensagem. Os passos abaixo assumem que uma atividade de origem já está configurada na operação; para a configuração da atividade de origem, consulte a documentação do conector relevante.

Passo 1: Configurar a atividade Publicar Mensagem

  1. No canvas de design, arraste uma atividade Publicar Mensagem da conexão Google Pub/Sub para o canvas.

  2. Nome: Insira um nome descritivo (por exemplo, Publicar Pedido Criado).

  3. Escolher Tópico: Selecione como especificar o tópico:

    • Selecionar Tópico Existente: Escolha a partir de uma lista de tópicos carregados do seu projeto Google Cloud. Requer a permissão pubsub.topics.list na conta de serviço.
    • Informar Tópico Manualmente: Insira o nome do tópico diretamente. Use isso se o nome do tópico for dinâmico ou se a conta de serviço não tiver permissão para listar.
  4. Tópico: Insira ou selecione o nome do tópico (por exemplo, order-events).

  5. Clique em Próximo, revise o esquema da solicitação e, em seguida, clique em Concluído.

Etapa 2: Mapear a transformação

  1. Adicione uma etapa de Transformação entre a atividade de origem e a atividade de Publicar Mensagem.

  2. Abra a transformação. Mapeie os campos de dados da origem para o esquema de solicitação de Publicar Mensagem.

    O esquema de solicitação inclui um nó body para a carga útil da mensagem. Se o tópico tiver um esquema configurado no Google Pub/Sub, o nó body refletirá esse esquema. Se nenhum esquema estiver configurado, body aceita um valor de string; serialize seus dados para JSON antes de mapeá-los:

    JSONStringify($source_data)
    
  3. Implante e execute a operação para publicar uma mensagem.

Parte 3: Receber e reconhecer mensagens de uma assinatura

Receber mensagens requer duas operações: uma para recuperar mensagens pendentes de uma assinatura e uma para reconhecê-las após o processamento. Mensagens não reconhecidas são reenviadas pelo Pub/Sub após o prazo de reconhecimento expirar.

Padrão de design

flowchart LR A[Atividade Obter Mensagem] --> B[Transformação] --> C[Atividade Alvo] B -->|Em Caso de Sucesso| D[Transformação] --> E[Atividade Reconhecer Mensagem]

Etapa 1: Configurar a atividade Obter Mensagem

  1. No canvas de design, arraste uma atividade Obter Mensagem da conexão do Google Pub/Sub para o canvas.

  2. Nome: Insira um nome descritivo (por exemplo, Obter Eventos de Pedido).

  3. Escolher Assinatura: Selecione Selecionar Assinatura Existente ou Informar Assinatura Manualmente, em seguida, insira ou selecione o nome da assinatura.

  4. Quantidade de Mensagens: Insira o número de mensagens a serem recuperadas por execução da operação (1–100, padrão 1). Defina isso para o tamanho do lote que seu processamento subsequente pode suportar.

  5. Prazo de Reconhecimento em Segundos: Opcionalmente, defina quanto tempo o Pub/Sub mantém a mensagem antes de reenviá-la se não for reconhecida (1–600 segundos). Deixe em branco para usar o prazo configurado da assinatura.

  6. Clique em Próximo, revise o esquema de resposta e, em seguida, clique em Concluído.

Passo 2: Processar as mensagens em uma transformação

  1. Adicione um passo de Transformação após a atividade Obter Mensagem.

  2. Abra a transformação e mapeie os campos da mensagem do esquema de resposta para o destino.

    O esquema de resposta inclui um campo messageId e um campo body para a carga da mensagem. Se o corpo da mensagem for JSON, deserializar na transformação:

    JSONParser(Source.body)
    

    Armazene o messageId (ou o campo ackId) em uma variável global para que o passo de reconhecimento possa referenciá-lo:

    $ack_id = Source.ackId;
    

Passo 3: Configurar a atividade Acknowledge Message

Após o processamento das mensagens, reconheça-as para evitar reentregas.

  1. Na tela de design, arraste uma atividade Acknowledge Message da conexão Google Pub/Sub para a tela.

  2. Nome: Insira um nome descritivo (por exemplo, Reconhecer Eventos de Pedido).

  3. Escolher Assinatura: Selecione a mesma assinatura usada na atividade Obter Mensagem.

  4. Clique em Próximo, revise o esquema e, em seguida, clique em Concluído.

  5. Adicione um passo de Transformação entre a transformação de processamento e a atividade Acknowledge Message. Mapeie o valor ackId armazenado em ack_id para o esquema de solicitação de reconhecimento.

  6. Nas configurações da operação, configure a operação Acknowledge Message para ser executada Com Sucesso da operação de processamento.

Aviso

Sempre reconheça as mensagens após o processamento bem-sucedido. Se a operação falhar antes do reconhecimento, o Pub/Sub reentrega a mensagem após o prazo de reconhecimento. Projete sua lógica de processamento para ser idempotente, de modo que mensagens reentregues não causem efeitos colaterais duplicados.

Verificar a integração

Publicação: Envie um registro de teste através da operação e verifique no Google Cloud Console (Pub/Sub > Tópicos > [nome do tópico]) se a contagem de mensagens aumentou. Alternativamente, use o padrão Obter Mensagem para puxar a mensagem de volta e confirmar a carga.

Recebendo: Publique uma mensagem de teste no tópico da assinatura usando o Google Cloud Console (Pub/Sub > Tópicos > [nome do tópico] > Publicar Mensagem). Execute a operação Obter Mensagem e verifique os logs da operação para confirmar que a mensagem foi recuperada. Verifique se o destino foi escrito com os dados esperados e, em seguida, confirme que a mensagem não aparece mais na assinatura (indicando reconhecimento bem-sucedido).

Se o teste de conexão falhar, verifique se a conta de serviço tem os papéis corretos atribuídos, conforme descrito nos pré-requisitos do Google Pub/Sub.