Guia de início rápido: como repetir mensagens

Neste guia, mostraremos exemplos de como repetir mensagens da API Pub/Sub.

Como usar a interface de linha de comando gcloud

A maneira mais fácil de usar a gcloud é no Cloud Shell. Também é possível usar a ferramenta de linha de comando que vem 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 do Cloud e a imagem do 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ê esteja usando uma dessas ferramentas de linha de comando.

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

Criar e buscar snapshots

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

gcloud pubsub topics create seek-demo-topic
gcloud 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:

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

Agora publique, efetue pull e confirme uma mensagem:

gcloud pubsub topics publish seek-demo-topic --message 'hello, world'
gcloud 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):

gcloud 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:

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

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

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

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

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

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

gcloud pubsub snapshots delete my-snapshot

Buscar um carimbo de data/hora

Outra maneira de repetir mensagens que foram confirmadas é buscar um carimbo de data/hora. Para isso, primeiro configure a assinatura para reter as mensagens confirmadas usando retain-acked-messages. Se retain-acked-messages estiver definido, o Pub/Sub retém as mensagens confirmadas por sete dias.

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

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

Agora publique, efetue pull e confirme uma mensagem:

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

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

gcloud 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:

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

Um pull subsequente produz a mensagem novamente:

gcloud 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:

gcloud pubsub topics publish seek-demo-topic --message 'hello, world'
gcloud 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:

gcloud pubsub subscriptions pull seek-demo-sub

Como usar o Console do Cloud

Crie snapshots ou busque snapshots atuais na página de detalhes da assinatura do Console do Cloud. Para regras de nomenclatura de snapshots, consulte Nomes de recursos.

Você encontra opções para criar ou buscar um snapshot na barra de menus da página de detalhes da assinatura.

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

Para reproduzir as mensagens novamente, vá até um snapshot ou um ponto no tempo.

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

Para ver detalhes do tópico, clique em

Como foi?

Os recursos e links extras estão disponíveis na página de suporte do Pub/Sub.

A seguir

Consulte Como repetir e descartar mensagens.