Reproduzir uma mensagem no Pub/Sub buscando um snapshot ou carimbo de data/hora
O Pub/Sub não pode recuperar as mensagens depois que você as confirma. No entanto, às vezes, pode ser necessário reproduzir as mensagens confirmadas, por exemplo, se você tiver feito uma confirmação incorreta. Em seguida, use o recurso Busca para marcar as mensagens confirmadas anteriormente como não confirmadas e forçar o Pub/Sub a reenviá-las. Também é possível usar a busca para excluir as mensagens não confirmadas, mudando o estado delas para "confirmado".
Procure um snapshot ou um carimbo de data/hora para reproduzir as mensagens em uma assinatura. Neste guia, mostramos exemplos de como reproduzir mensagens do Pub/Sub confirmadas anteriormente usando a busca.
Para seguir as instruções passo a passo desta tarefa diretamente no console do Google Cloud, clique em Orientação:
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Set up a Google Cloud console project.
Click to:
- Create or select a project.
- Enable the Pub/Sub API for that project.
You can view and manage these resources at any time in the Google Cloud console.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Set up a Google Cloud console project.
Click to:
- Create or select a project.
- Enable the Pub/Sub API for that project.
You can view and manage these resources at any time in the Google Cloud console.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
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 a Google Cloud CLI. Os pré-requisitos de configuração serão atendidos automaticamente para a CLI gcloud 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 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.
Consulte 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)
Para mais informações sobre os formatos de tempo aceitos, consulte Data e hora no gcloud.
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
Use 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.
Criar um instantâneo
No console do Google Cloud, acesse a página Assinaturas do Pub/Sub.
Selecione uma assinatura na lista.
Clique em Criar snapshot.
Insira um ID para o snapshot e clique em Criar para salvar.
Os snapshots podem ser visualizados na página de snapshots no console do Google Cloud. Também é possível gerenciar snapshots na página de detalhes de um tópico individual.
Como repetir uma assinatura
Na caixa de diálogo Repetir mensagens, é possível buscar um momento anterior ou um snapshot salvo. Para abrir a caixa de diálogo, faça o seguinte:
No console do Google Cloud, acesse a página Assinaturas do Pub/Sub.
Selecione uma assinatura na lista.
Clique em Repetir mensagens.
Em Procurar, selecione Para um ponto anterior no tempo ou Para um snapshot e escolha o momento ou snapshot que será buscado.
Clique em Procurar para repetir as mensagens.
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.