Vista geral da publicação de mensagens

Para publicar uma mensagem com o Pub/Sub, uma aplicação publicadora cria e envia mensagens para um tópico.

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

Acerca dos tópicos

Um tópico do Pub/Sub é um recurso com nome que representa um feed de mensagens. Quando um publicador envia uma mensagem, segmenta um tópico específico. O serviço Pub/Sub usa este nome do tópico para encaminhar a mensagem para todas as subscrições anexadas ao tópico. Se existirem vários subscritores para uma subscrição, apenas um subscritor na subscrição recebe a mensagem.

Os publicadores não têm de saber quantos subscritores existem. Focam-se no tópico, garantindo a separação de preocupações entre o envio de mensagens e a receção de mensagens.

O Pub/Sub suporta dois tipos de tópicos: um tópico padrão e um tópico de importação.

Propriedades de um tópico

Quando cria ou atualiza um tópico, pode especificar as propriedades do tópico.

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

Acerca dos tópicos de importação

Um tópico de importação permite que o Pub/Sub carregue dados de streaming de outra origem e atue como a aplicação publicadora que envia os dados para o tópico. Pode ativar o carregamento num tópico através da consola, da Google Cloud CLI, de chamadas REST ou das bibliotecas cliente. Como parte da gestão do tópico de importação, Google Cloud oferece monitorização e escalabilidade do pipeline de carregamento.

Sem um tópico de importação, o streaming de dados para o Pub/Sub a partir de uma origem de dados requer um serviço adicional. Este serviço adicional extrai dados da origem original e publica-os no Pub/Sub. O serviço adicional pode ser um motor de streaming, como o Apache Spark, ou um serviço escrito de forma personalizada. Também tem de configurar, implementar, executar, dimensionar e monitorizar este serviço.

Segue-se uma lista de informações importantes sobre os tópicos de importação:

  • Tal como num tópico padrão, continua a poder publicar manualmente num tópico de importação.

  • Só pode anexar uma única origem de carregamento a um tópico de importação.

Recomendamos que importe tópicos para dados de streaming. Se estiver a considerar o carregamento de dados em lote para o BigQuery em vez do carregamento de dados em fluxo, pode experimentar o Serviço de transferência de dados do BigQuery. Se quiser carregar dados para o Cloud Storage, o Serviço de transferência de armazenamento (STS) é uma boa opção.

O Pub/Sub suporta as seguintes origens para tópicos de importação:

Replicação de dados num tópico

Um tópico do Pub/Sub usa três zonas para armazenar dados. O serviço suporta a replicação síncrona para, pelo menos, duas zonas e a replicação de melhor esforço para uma terceira zona adicional. A replicação do Pub/Sub está apenas numa região.

Acerca das mensagens

Uma mensagem do Pub/Sub são os dados que se movem através do serviço.

Uma mensagem consiste em campos com os dados e os metadados da mensagem. Tem de especificar um dos seguintes elementos numa mensagem.

  • Os dados da mensagem: este é o conteúdo principal da mensagem e pode ser qualquer texto ou dados binários. Representa as informações reais que quer comunicar entre publicadores e subscritores. Se estiver a usar a API REST diretamente, os dados das mensagens têm de estar codificados em base64. Consulte o exemplo no separador REST da secção Publicar mensagens.

  • Uma chave de ordenação: este é um identificador que representa a entidade para a qual as mensagens têm de ser ordenadas. Espera-se que as mensagens com a mesma chave de ordenação sejam entregues a um subscritor pela ordem em que foram publicadas. Uma chave de ordenação só é necessária se quiser o fornecimento ordenado das suas mensagens. Para mais informações sobre como encomendar chaves, consulte o artigo Encomendar mensagem.

  • Atributos: estes são pares de chave/valor opcionais que fornecem contexto e informações adicionais acerca da mensagem. Podem ser usados para encaminhar, filtrar ou enriquecer o conteúdo da mensagem. Por exemplo, pode adicionar atributos como datas/horas ou IDs de transações. Para mais informações sobre os atributos usados na publicação de mensagens, consulte o artigo Use atributos para publicar uma mensagem.

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

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

Por exemplo, aqui está um formato de mensagem em JSON:

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

Quando publicar mensagens através das bibliotecas de cliente do Pub/Sub, forneça a mensagem data como uma matriz de bytes, como um Node.js Buffer. Se os seus dados forem uma string, primeiro tem de os codificar em bytes, por exemplo, usando a codificação UTF-8, antes de os transmitir à biblioteca de cliente.

Se estiver a usar a API REST diretamente, os dados das mensagens têm de 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, uma aplicação de publicador cria e envia mensagens para um tópico.

  1. Crie uma mensagem com os seus dados.
  2. Selecione quaisquer atributos de publicação opcionais.
  3. Enviar um pedido ao servidor Pub/Sub para publicar a mensagem num tópico especificado.
  4. O serviço Pub/Sub recebe a mensagem e processa-a da seguinte forma:

    • A mensagem é armazenada para distribuição.

    • A mensagem é replicada em várias zonas para garantir a durabilidade e a elevada disponibilidade.

    • O Pub/Sub identifica os subscritores com subscrições correspondentes ao tópico da mensagem e envia uma cópia da mensagem a cada um deles.

O Pub/Sub oferece a entrega de mensagens, pelo menos, uma vez e a ordenação com o melhor esforço possível aos subscritores existentes.

Para mais informações acerca do sistema Pub/Sub, consulte o artigo Vista geral do serviço Pub/Sub.

Para mais informações sobre o funcionamento do Pub/Sub, consulte a vista geral da arquitetura do Pub/Sub.

O que se segue?

Apache Kafka® é uma marca comercial registada da The Apache Software Foundation ou das respetivas afiliadas nos Estados Unidos e/ou noutros países.