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
-
No Studio, abra seu projeto e vá para a aba Endpoints e conectores do projeto na paleta de componentes de design.
-
Clique no conector Google Pub/Sub para abrir a configuração da conexão.
-
Nome da Conexão: Insira um nome único (por exemplo,
Google Pub/Sub). O nome não pode conter barras ou dois-pontos. -
ID do Projeto: Insira o valor
project_iddo arquivo JSON de credenciais da conta de serviço. -
Email do Cliente: Insira o valor
client_emaildo arquivo JSON de credenciais. -
String da Chave Privada: Insira o valor
private_keydo arquivo JSON de credenciais, formatado como:-----BEGIN PRIVATE KEY-----<private_key>-----END PRIVATE KEY-----Nota
O valor
private_keyno arquivo JSON usa\npara representar quebras de linha. Substitua cada\npor um retorno de carro real antes de colar neste campo. Se a chave for colada com caracteres\nliterais, o teste de conexão retorna um erro Dados PKCS#8 inválidos. -
Clique em Testar para verificar a conexão.
-
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
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
-
No canvas de design, arraste uma atividade Publicar Mensagem da conexão Google Pub/Sub para o canvas.
-
Nome: Insira um nome descritivo (por exemplo,
Publicar Pedido Criado). -
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.listna 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.
- Selecionar Tópico Existente: Escolha a partir de uma lista de tópicos carregados do seu projeto Google Cloud. Requer a permissão
-
Tópico: Insira ou selecione o nome do tópico (por exemplo,
order-events). -
Clique em Próximo, revise o esquema da solicitação e, em seguida, clique em Concluído.
Etapa 2: Mapear a transformação
-
Adicione uma etapa de Transformação entre a atividade de origem e a atividade de Publicar Mensagem.
-
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ó
bodypara a carga útil da mensagem. Se o tópico tiver um esquema configurado no Google Pub/Sub, o nóbodyrefletirá esse esquema. Se nenhum esquema estiver configurado,bodyaceita um valor de string; serialize seus dados para JSON antes de mapeá-los:JSONStringify($source_data) -
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
Etapa 1: Configurar a atividade Obter Mensagem
-
No canvas de design, arraste uma atividade Obter Mensagem da conexão do Google Pub/Sub para o canvas.
-
Nome: Insira um nome descritivo (por exemplo,
Obter Eventos de Pedido). -
Escolher Assinatura: Selecione Selecionar Assinatura Existente ou Informar Assinatura Manualmente, em seguida, insira ou selecione o nome da assinatura.
-
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. -
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.
-
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
-
Adicione um passo de Transformação após a atividade Obter Mensagem.
-
Abra a transformação e mapeie os campos da mensagem do esquema de resposta para o destino.
O esquema de resposta inclui um campo
messageIde um campobodypara a carga da mensagem. Se o corpo da mensagem for JSON, deserializar na transformação:JSONParser(Source.body)Armazene o
messageId(ou o campoackId) 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.
-
Na tela de design, arraste uma atividade Acknowledge Message da conexão Google Pub/Sub para a tela.
-
Nome: Insira um nome descritivo (por exemplo,
Reconhecer Eventos de Pedido). -
Escolher Assinatura: Selecione a mesma assinatura usada na atividade Obter Mensagem.
-
Clique em Próximo, revise o esquema e, em seguida, clique em Concluído.
-
Adicione um passo de Transformação entre a transformação de processamento e a atividade Acknowledge Message. Mapeie o valor
ackIdarmazenado emack_idpara o esquema de solicitação de reconhecimento. -
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.