Riproduci un messaggio in Pub/Sub eseguendo la ricerca fino a uno snapshot o un timestamp
Pub/Sub non può recuperare i messaggi dopo che li hai confermati. Tuttavia, a volte potresti ritenere necessario riprodurre i messaggi confermati, ad esempio se hai eseguito una conferma errata. Poi puoi utilizzare la funzionalità Cerca per contrassegnare i messaggi confermati in precedenza come non confermati e forzare Pub/Sub a inviarli di nuovo. Puoi anche utilizzare la ricerca per eliminare i messaggi non riconosciuti modificandone lo stato in riconosciuto.
Esegui la ricerca fino a uno snapshot o un timestamp per riprodurre i messaggi in una sottoscrizione. Questa guida mostra esempi di come riprodurre i messaggi Pub/Sub confermati in precedenza utilizzando la ricerca.
Per seguire le indicazioni dettagliate per questa attività direttamente nella Google Cloud console, fai clic su Procedura guidata:
Prima di iniziare
- 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.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
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.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Utilizzo dell'interfaccia a riga di comando gcloud
Il modo più semplice per utilizzare gcloud è in Cloud Shell . Puoi anche utilizzare lo strumento a riga di comando fornito con Google Cloud CLI. I prerequisiti di configurazione vengono soddisfatti automaticamente per la gcloud CLI se crei un'istanza macchina Compute Engine nuova di zecca con ambiti di accesso che includono tutte le API Cloud e l'immagine Debian predefinita. Il modo più semplice per crearlo è tramite la UI di Compute Engine. Per il resto di questo documento, presupporremo che tu stia utilizzando uno di questi strumenti a riga di comando.
Per saperne di più sull'utilizzo di gcloud, consulta la guida rapida di gcloud.
Consulta anche la sezione gcloud pubsub nella
documentazione di riferimento di gcloud
per un elenco completo dei comandi Pub/Sub gcloud
.
Creare snapshot e spostarsi tra questi
Crea un argomento e una sottoscrizione. Per una migliore interattività, utilizza una scadenza di conferma breve:
gcloud pubsub topics create seek-demo-topic gcloud pubsub subscriptions create seek-demo-sub --topic=seek-demo-topic --ack-deadline=10
Finora, nessun messaggio nella sottoscrizione è stato confermato. Acquisisci questo stato creando uno snapshot:
gcloud pubsub snapshots create my-snapshot --subscription=seek-demo-sub gcloud pubsub snapshots list
Ora pubblica, recupera e conferma un messaggio:
gcloud pubsub topics publish seek-demo-topic --message 'hello, world' gcloud pubsub subscriptions pull --auto-ack seek-demo-sub
Tieni presente che i pull successivi non generano nuovi messaggi (sono possibili alcuni duplicati temporanei):
gcloud pubsub subscriptions pull --auto-ack seek-demo-sub
Puoi recuperare il messaggio cercando l'abbonamento nello snapshot. Tieni presente che il messaggio potrebbe non essere recapitato immediatamente: Pub/Sub non garantisce la latenza di recapito dei messaggi. Tuttavia, è garantito che i messaggi conservati nello snapshot verranno alla fine consegnati almeno una volta:
gcloud pubsub subscriptions seek seek-demo-sub --snapshot=my-snapshot gcloud pubsub subscriptions pull seek-demo-sub --auto-ack
Tieni presente che puoi cercare altre sottoscrizioni nello stesso snapshot, a condizione che l'argomento della sottoscrizione sia lo stesso dell'argomento dello 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
Il recupero da seek-demo-sub2
ora restituirà i messaggi pubblicati prima della creazione di seek-demo-sub2
:
gcloud pubsub subscriptions pull seek-demo-sub2 --auto-ack
Al termine dello snapshot, esegui la pulizia:
gcloud pubsub snapshots delete my-snapshot
Esegui la ricerca fino a un timestamp
Un altro modo per riprodurre i messaggi confermati è cercare un
timestamp. Per cercare un timestamp, devi prima configurare la sottoscrizione in modo da conservare i messaggi confermati utilizzando retain-acked-messages
. Se
retain-acked-messages
è impostato, Pub/Sub conserva i messaggi confermati per 7 giorni.
Devi eseguire questo passaggio solo se intendi cercare un timestamp, non uno snapshot.
gcloud pubsub subscriptions update seek-demo-sub --retain-acked-messages
Ora pubblica, recupera e conferma un messaggio:
gcloud pubsub topics publish seek-demo-topic --message 'hello, world' gcloud pubsub subscriptions pull --auto-ack seek-demo-sub
Il pull successivo non dovrebbe restituire messaggi:
gcloud pubsub subscriptions pull seek-demo-sub
Ora cerca l'abbonamento a ritroso nel tempo per recuperare il messaggio. Tieni presente che i flag di calcolo delle date sono diversi tra le versioni GNU e BSD (MacOS) del 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)
Per ulteriori informazioni sui formati di ora supportati, vedi gcloud topic datetimes.
Un'estrazione successiva dovrebbe restituire di nuovo il messaggio:
gcloud pubsub subscriptions pull --auto-ack seek-demo-sub
Puoi anche utilizzare la ricerca per saltare la pubblicazione di tutti i messaggi pubblicati prima di un determinato momento, ad esempio l'ora attuale. Per farlo, cerca la sottoscrizione fino all'ora attuale per contrassegnare come confermati tutti i messaggi precedenti:
gcloud pubsub topics publish seek-demo-topic --message 'hello, world' gcloud pubsub subscriptions seek seek-demo-sub --time=$(date -u +$TS_FORMAT)
Dopo un certo ritardo di propagazione (~60 secondi), il messaggio non verrà più recapitato. Puoi verificarlo eseguendo ripetutamente il comando pull senza confermare la ricezione del messaggio:
gcloud pubsub subscriptions pull seek-demo-sub
Utilizzo della console Cloud
Puoi creare snapshot o cercare snapshot esistenti nella pagina dei dettagli dell'abbonamento della console Cloud. Per le regole di denominazione degli snapshot, consulta Nomi delle risorse.
Creazione di uno snapshot in corso
Nella Google Cloud console, vai alla pagina Sottoscrizioni Pub/Sub.
Seleziona un abbonamento dall'elenco.
Fai clic su Crea snapshot.
Inserisci un ID per lo snapshot, poi fai clic su Crea per salvare.
Gli snapshot possono essere visualizzati nella pagina Snapshot nella console Google Cloud . Puoi anche gestire gli snapshot nella pagina dei dettagli di un singolo argomento.
Riproduzione di un abbonamento
La finestra di dialogo Riproduci messaggi ti consente di eseguire la ricerca fino a un punto temporale precedente o uno snapshot salvato. Per aprire la finestra di dialogo:
Nella Google Cloud console, vai alla pagina Sottoscrizioni Pub/Sub.
Seleziona un abbonamento dall'elenco.
Fai clic su Riproduci messaggi.
In Cerca, seleziona Fino a un punto temporale precedente o Fino a uno snapshot, poi seleziona il punto temporale o lo snapshot in cui eseguire la ricerca.
Fai clic su Cerca per riprodurre i messaggi.
Com'è andata?
Tieni presente che risorse e link aggiuntivi sono disponibili nella pagina di assistenza Pub/Sub.
Passaggi successivi
Vedi Ripetizione della visione ed eliminazione dei messaggi.