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, Trusted Cloud by S3NS 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.