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 sobre o fluxo de trabalho de publicação, incluindo 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, ela segmenta um tópico específico. O O serviço Pub/Sub usa esse nome de tópico para rotear a mensagem para todos de assinaturas vinculadas ao tópico. Se houver vários assinantes para uma assinatura, apenas um deles vai receber a mensagem.
Os editores não precisam saber quantos assinantes existem. Eles se concentram no tópico, garantindo a separação de preocupações entre o envio de mensagens e recebimento de mensagens.
O Pub/Sub oferece suporte a dois tipos de tópicos: um padrão e um tópico de importação.
Propriedades de um tópico
Ao criar ou atualizar um tópico, é possível especificar as propriedades dele.
Para mais informações sobre as propriedades do tópico, consulte Propriedades de um tópico.
Sobre os tópicos de importação
Com um tópico de importação, o Pub/Sub pode ingerir dados de streaming outra fonte e atuar como o aplicativo do editor que envia os dados para tópico. É possível ativar a ingestão em um tópico usando o console, a Google Cloud CLI, a REST chamadas ou bibliotecas de cliente. Como parte do gerenciamento do tópico de importação, o Google Cloud oferece monitoramento e escalonamento do pipeline de ingestão.
Sem um tópico de importação, fazer streaming de dados para o Pub/Sub a partir de um origem requer um serviço adicional. Esse serviço adicional extrai os dados da fonte original e os publica no Pub/Sub. O um serviço adicional pode ser um mecanismo de streaming como o Apache Spark ou um personalizado. Também é preciso configurar, implantar, executar, escalonar e monitorar esse serviço.
Segue uma lista de informações importantes sobre tópicos de importação:
Semelhante a um tópico padrão, você ainda pode publicar manualmente em um importar tópico.
Só é possível anexar uma origem de ingestão a um tópico 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 em streaming, tente usar o serviço de transferência de dados do BigQuery (BQ DTS). Para ingerir dados no Cloud Storage, Serviço de transferência do Cloud Storage (STS) é uma boa opção.
O Pub/Sub é compatível com as seguintes fontes para tópicos de importação: Amazon Kinesis Data Streams
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 o a replicação para uma terceira zona adicional. A replicação do Pub/Sub é em apenas uma região.
Sobre as mensagens
Uma mensagem do Pub/Sub são os dados transmitidos pelo serviço.
Uma mensagem consiste em campos com os dados e os metadados da mensagem. Uma das seguintes opções: precisa ser especificado em uma mensagem.
Dados da mensagem: é o conteúdo principal da mensagem e pode ser qualquer texto ou dados binários. Ele representa as informações reais entre editores e assinantes. Se você usa a API REST diretamente, os dados da mensagem precisam ser codificados em base64. Veja o exemplo na guia REST na seção Publicar mensagens.
Uma chave de ordenação: é um identificador que representa a entidade para a qual as mensagens precisam ser ordenadas. Mensagens com a mesma chave de ordem devem ser entregues a um assinante na ordem em que foram publicadas. Uma chave de ordenação só é necessária se você quiser o envio ordenado das mensagens. Para saber mais sobre chaves de ordem, consulte Mensagem do pedido.
Atributos: pares de chave-valor opcionais que oferecem mais contexto e informações sobre a mensagem. Elas podem ser usadas para roteamento, filtrar ou enriquecer o conteúdo da mensagem. Por exemplo, é possível adicionar atributos como carimbos de data/hora ou IDs de transação. Para saber mais 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"
}
Fluxo de trabalho da publicação de mensagens
Para publicar uma mensagem com o Pub/Sub, um aplicativo editor cria e envia mensagens para um tópico.
- Criar uma mensagem contendo seus dados.
- Selecione os atributos de publicação opcionais.
- Enviar uma solicitação ao servidor do Pub/Sub para publicar a mensagem a um tópico específico.
O serviço Pub/Sub recebe a mensagem e a processa da seguinte maneira:
A mensagem é armazenada para distribuição.
A mensagem é replicada em várias zonas para oferecer durabilidade e alta disponibilidade.
O Pub/Sub identifica assinantes com assinaturas correspondentes 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 os assinantes atuais.
Para uma visão geral do sistema do Pub/Sub, consulte Visão geral do serviço Pub/Sub.
Para uma explicação de como o Pub/Sub funciona, consulte Visão geral da arquitetura do Pub/Sub.