Início rápido: como reproduzir mensagens

Neste guia, você vê exemplos de como reproduzir mensagens da API Cloud Pub/Sub.

Como usar a interface da linha de comando gcloud

A maneira mais fácil de usar o gcloud é no Cloud Shell, mas também é possível usar a ferramenta de linha de comando fornecida com o SDK do Cloud. Os pré-requisitos de configuração serão atendidos automaticamente para o SDK do Cloud se você criar uma nova instância de máquina do Compute Engine com escopos de acesso, incluindo todas as APIs Cloud e a imagem Debian padrão. A maneira mais simples de criá-la é por meio da IU do Compute Engine. No restante deste documento, vamos supor que você está usando uma dessas ferramentas de linha de comando.

Para mais informações sobre como usar o gcloud, consulte o Guia de início rápido do gcloud. Consulte também a seção gcloud pubsub na referência da gcloud para ver a lista completa de comandos gcloud do Cloud Pub/Sub.

Criar e buscar instantâneos

Crie um tópico e uma assinatura. Para ter melhor interatividade, use um prazo de confirmação curto:

alias pubsub='gcloud beta pubsub'
pubsub topics create seek-demo-topic
pubsub subscriptions create seek-demo-sub --topic=seek-demo-topic --ack-deadline=10

Até o momento, nenhuma mensagem na assinatura foi confirmada. Capture esse estado criando um instantâneo:

pubsub snapshots create my-snapshot --subscription=seek-demo-sub
pubsub snapshots list

Agora publique, efetue pull e confirme uma mensagem:

pubsub topics publish seek-demo-topic --message 'hello, world'
pubsub subscriptions pull --auto-ack seek-demo-sub

Observe que os pulls subsequentes não produzem novas mensagens (mas podem gerar algumas duplicatas transitórias):

pubsub subscriptions pull --auto-ack seek-demo-sub

É possível recuperar a mensagem buscando a assinatura do instantâneo. Talvez a mensagem não seja entregue instantaneamente porque o Pub/Sub não garante a latência de entrega de mensagens. No entanto, é certo que as mensagens retidas no instantâneo serão entregues pelo menos uma vez:

pubsub subscriptions seek seek-demo-sub --snapshot=my-snapshot
pubsub subscriptions pull seek-demo-sub --auto-ack

É possível buscar outras assinaturas do mesmo instantâneo, desde que o tópico da assinatura seja igual ao do instantâneo:

pubsub subscriptions create seek-demo-sub2 --topic=seek-demo-topic --ack-deadline=10
pubsub subscriptions seek seek-demo-sub2 --snapshot=my-snapshot

O pull de seek-demo-sub2 produzirá mensagens que foram publicadas antes da criação de seek-demo-sub2:

pubsub subscriptions pull seek-demo-sub2 --auto-ack

Quando você terminar de utilizar o snapshot, faça a limpeza:

pubsub snapshots delete my-snapshot

Buscar um carimbo de data/hora

Outra maneira de reproduzir mensagens que foram confirmadas é buscar um carimbo de data/hora. Para isso, primeiro configure a assinatura para reter mensagens confirmadas usando retain-acked-messages. Por padrão, as mensagens são retidas por sete dias, mas é possível definir uma duração mais curta (não inferior a 10 minutos) usando message-retention-duration. Para mais informações, consulte a configuração da assinatura em Como reproduzir e descartar mensagens.

Só é necessário executar esta etapa caso pretenda buscar um carimbo de data/hora, e não um instantâneo.

pubsub subscriptions update seek-demo-sub --retain-acked-messages

Agora publique, efetue pull e confirme uma mensagem:

pubsub topics publish seek-demo-topic --message 'hello, world'
pubsub subscriptions pull --auto-ack seek-demo-sub

O próximo pull não pode retornar nenhuma mensagem:

pubsub subscriptions pull seek-demo-sub

Agora, busque a assinatura no histórico para recuperar a mensagem. Observe que as sinalizações aritméticas de data diferem entre as versões GNU e BSD (MacOS) do comando date:

TS_FORMAT=%Y-%m-%dT%H:%M:%SZ
pubsub subscriptions seek seek-demo-sub --time=$(date -u -d '-10 min' +$TS_FORMAT)

Um pull subsequente produz a mensagem novamente:

pubsub subscriptions pull --auto-ack seek-demo-sub

É possível também usar a busca para pular a entrega de todas as mensagens publicadas antes de um determinado momento, como a hora atual. Para fazer isso, busque a assinatura da hora atual para marcar como confirmadas todas as mensagens anteriores:

pubsub topics publish seek-demo-topic --message 'hello, world'
pubsub subscriptions seek seek-demo-sub --time=$(date -u +$TS_FORMAT)

Um atraso na propagação de cerca de 60 segundos significa que a mensagem não será mais entregue. Verifique isso executando repetidamente o comando pull sem confirmar a mensagem:

pubsub subscriptions pull seek-demo-sub

Como usar o Cloud Console

Você pode criar instantâneos ou buscar instantâneos existentes na página de detalhes da assinatura do Cloud Console. Para ver regras de nomenclatura de instantâneos, consulte Nomes de recursos.

A caixa de diálogo de busca oferece a opção de buscar por um instantâneo ou um horário:

Também é possível gerenciar instantâneos na página de detalhes de um tópico individual:

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Cloud Pub/Sub