Visão geral da publicação de mensagens

Para publicar uma mensagem com o Pub/Sub, um aplicativo editor cria e envia mensagens para um tópico.

Este documento apresenta uma visão geral do fluxo de trabalho de publicação, incluindo o conceito de tópicos e mensagens.

Sobre os temas

Um tópico do Pub/Sub é um recurso nomeado que representa um feed de mensagens. Quando um editor envia uma mensagem, ele segmenta um tópico específico. O serviço Pub/Sub usa esse nome de tópico para encaminhar a mensagem a todas as assinaturas anexadas a ele. Se houver vários assinantes para uma assinatura, apenas um deles vai receber a mensagem.

Os publishers não precisam saber quantos assinantes existem. Eles se concentram no tópico, garantindo a separação de interesses entre o envio e o recebimento de mensagens.

O Pub/Sub é compatível com dois tipos de tópicos: um padrão e um de importação.

Propriedades de um tema

Ao criar ou atualizar um tópico, é possível especificar as propriedades dele.

Para mais informações sobre as propriedades de um tópico, consulte Propriedades de um tópico.

Sobre os tópicos de importação

Um tópico de importação permite que o Pub/Sub ingira dados de streaming de outra fonte e atue como o aplicativo editor que envia os dados para o tópico. É possível ativar a ingestão em um tópico usando o console, a Google Cloud CLI, chamadas REST ou as bibliotecas de cliente. Como parte do gerenciamento do tópico de importação, oTrusted Cloud by S3NS oferece monitoramento e escalonamento do pipeline de ingestão.

Sem um tópico de importação, o streaming de dados para o Pub/Sub de uma fonte de dados exige um serviço adicional. Esse serviço adicional extrai dados da fonte original e os publica no Pub/Sub. O serviço adicional pode ser um mecanismo de streaming, como o Apache Spark, ou um serviço escrito de forma personalizada. Também é necessário configurar, implantar, executar, escalonar e monitorar esse serviço.

Confira abaixo uma lista de informações importantes sobre os tópicos de importação:

  • Assim como um tópico padrão, você ainda pode publicar manualmente em um tópico de importação.

  • Só é possível anexar uma única fonte de ingestão a um tema de importação.

Recomendamos importar tópicos para dados de streaming. Se você estiver considerando a ingestão de dados em lote no BigQuery em vez da ingestão de dados de streaming, tente o serviço de transferência de dados do BigQuery. Se você quiser ingerir dados no Cloud Storage, o Storage Transfer Service (STS) é uma boa opção.

O Pub/Sub aceita as seguintes origens para importar tópicos:

Replicação de dados em um tópico

Um tópico do Pub/Sub usa três zonas para armazenar dados. O serviço oferece suporte à replicação síncrona em pelo menos duas zonas e à replicação de melhor esforço em uma terceira zona adicional. A replicação do Pub/Sub é feita em apenas uma região.

Sobre as mensagens

Uma mensagem do Pub/Sub são os dados transferidos pelo serviço.

Uma mensagem consiste em campos com os dados e os metadados da mensagem. Um dos seguintes itens precisa ser especificado em uma mensagem.

  • Os dados da mensagem: é o conteúdo principal da mensagem e pode ser qualquer texto ou dado binário. Ela representa as informações reais que você quer comunicar entre editores e assinantes. Se você estiver usando a API REST diretamente, os dados da mensagem precisarão ser codificados em base64. Confira o exemplo na guia "REST" da seção Publicar mensagens.

  • Uma chave de ordenação: um identificador que representa a entidade para a qual as mensagens precisam ser ordenadas. As mensagens com a mesma chave de ordenação devem ser entregues a um assinante na ordem em que foram publicadas. Uma chave de ordenação só é necessária se você quiser a entrega ordenada das mensagens. Para mais informações sobre chaves de ordenação, consulte Mensagem de pedido.

  • Atributos: são pares de chave-valor opcionais que fornecem contexto e informações adicionais sobre a mensagem. Eles podem ser usados para roteamento, filtragem ou enriquecimento do conteúdo da mensagem. Por exemplo, é possível adicionar atributos como carimbos de data/hora ou IDs de transação. Para mais informações sobre os atributos usados na publicação de mensagens, consulte Usar atributos para publicar uma mensagem.

O serviço Pub/Sub adiciona os seguintes campos à mensagem:

  • Um ID de mensagem exclusivo para o tópico
  • Carimbo de data/hora de quando o serviço do Pub/Sub recebe a mensagem

Por exemplo, este é um formato de mensagem em JSON:

{
  "data": "This is the core message content.",
  "attributes": {
    "category": "notification",
    "user_id": "12345",
    "priority": "medium"
  },
    "orderingKey": "12345"
}

Ao publicar mensagens usando bibliotecas de cliente do Pub/Sub, forneça a mensagem data como uma matriz de bytes, como um Buffer do Node.js. Se os dados forem uma string, primeiro codifique-os em bytes, por exemplo, usando a codificação UTF-8, antes de transmiti-los à biblioteca de cliente.

Se você estiver usando a API REST diretamente, os dados da mensagem precisarão ser codificados em base64 e enviados como uma string.

Fluxo de trabalho de publicação de mensagens

Para publicar uma mensagem com o Pub/Sub, um aplicativo editor cria e envia mensagens para um tópico.

  1. Criar uma mensagem contendo seus dados.
  2. Selecione os atributos de publicação opcionais.
  3. Enviar uma solicitação para o servidor do Pub/Sub publicar a mensagem em um tópico especificado.
  4. O serviço Pub/Sub recebe e processa a mensagem da seguinte maneira:

    • A mensagem é armazenada para distribuição.

    • A mensagem é replicada em várias zonas para durabilidade e alta disponibilidade.

    • O Pub/Sub identifica os assinantes com assinaturas que correspondem ao tópico da mensagem e entrega uma cópia da mensagem a cada um deles.

O Pub/Sub oferece entrega de mensagens pelo menos uma vez e ordenação de melhor esforço para assinantes atuais.

Para mais informações sobre o sistema Pub/Sub, consulte Visão geral do serviço Pub/Sub.

Para mais informações sobre como o Pub/Sub funciona, consulte Visão geral da arquitetura do Pub/Sub.

A seguir

Apache Kafka® é uma marca registrada da The Apache Software Foundation ou afiliadas nos Estados Unidos e/ou em outros países.