Como trabalhar com o Pub/Sub

O Pub/Sub é um serviço de mensagens em tempo real totalmente gerenciado que permite o envio e o recebimento de mensagens entre aplicativos independentes. Nesta página, mostramos como gerenciar o Pub/Sub usando o Cloud Tools for PowerShell. Ela contém um exemplo simples de como criar um tópico, publicar mensagens, criar uma assinatura dele e solicitar as mensagens para a assinatura.

Leia a referência de cmdlets do Cloud Tools for PowerShell para saber mais sobre os cmdlets do Pub/Sub. Para saber mais sobre o Pub/Sub em geral, leia a Visão geral do Pub/Sub.

Criar um tópico

O aplicativo do editor cria e envia mensagens para um tópico. Você pode chamar o cmdlet New‑GcpsTopic para criar uma instância em um tópico específico. Se a configuração ativa do gcloud tiver um projeto, você não precisará usar o parâmetro -Project.

# Creates topic "my-topic" in the default project.
New-GcpsTopic -Topic "my-topic"

Publicar uma mensagem em um tópico

Para publicar mensagens em um tópico, use o cmdlet Publish‑GcpsMessage.

# Publishes the message with data "This is a test" to topic "my-topic".
Publish-GcpsMessage -Data "This is a test" -Topic "my-topic"

Para publicar várias mensagens no mesmo tópico com uma única solicitação, você pode usar o cmdlet New‑GcpsMessage para criar uma matriz de mensagens e transmiti-la para o cmdlet Publish‑GcpsMessage.

# Creates two messages.
$messageOne = New-GcpsMessage -Data "This is a test"
$messageTwo = New-GcpsMessage -Data "Data" -Attributes @{"key" = "value"}

# Publish the messages to topic "my-topic".
Publish-GcpsMessage -Message @($messageOne, $messageTwo) -Topic "my-topic"

Criar uma assinatura em um tópico

O aplicativo do assinante cria uma assinatura em um tópico para receber mensagens dele. Você pode chamar o cmdlet New‑GcpsSubscription para criar uma instância em um tópico específico. Se a configuração gcloud ativa tiver um projeto, você não precisará usar o parâmetro -Project.

Por padrão, a assinatura criada é uma assinatura de pull, o que significa que o assinante solicita as mensagens do tópico. Você pode criar uma assinatura de push (o Pub/Sub enviará mensagens para o endpoint escolhido pelo assinante) com -PushEndpoint.

# Creates pull subscription "pull-subscription" to topic "my-topic" in the default project.
New-GcpsSubscription -Topic "my-topic" -Subscription "pull-subscription"

# Creates push subscription "push-subscription" to topic "my-topic".
New-GcpsSubscription -Topic "my-topic" `
                     -Subscription "push-subscription" `
                     -PushEndpoint "http://www.example.com"

Recuperar mensagens da assinatura

Para extrair mensagens da assinatura, use o cmdlet Get‑GcpsMessage. Por padrão, o cmdlet bloqueará o processo até que pelo menos uma mensagem seja recebida. Para evitar o bloqueio, use o parâmetro -ReturnImmediately. O cmdlet também pode enviar automaticamente uma confirmação para cada mensagem recuperada, se você usar o parâmetro -AutoAck. Caso contrário, você precisará usar o cmdlet Send‑GcpsAck para enviar a confirmação. Mensagens não confirmadas ficarão disponíveis novamente para solicitação depois que o prazo de confirmação expirar.

# Pulls messages from subscription "my-subscription" and sends out acknowledgement automatically.
Get-GcpsMessage -Subscription "my-subscription" -AutoAck

# Pulls messages from subscription "my-subscription" and sends out acknowledgement with Send-GcpsAck.
$messages = Get-GcpsMessage -Subscription "my-subscription"
Send-GcpsAck -InputObject $messages