Riproduci di nuovo un messaggio in Pub/Sub cercando uno snapshot o un timestamp

Pub/Sub non può recuperare i messaggi dopo che li hai confermati. Tuttavia, a volte può essere necessario riprodurre i messaggi confermati, ad esempio se hai eseguito una conferma errata. Quindi puoi utilizzare la funzionalità Ricerca per contrassegnare come non confermati i messaggi confermati in precedenza e forzare Pub/Sub a recapitarli. Puoi anche utilizzare la funzionalità di ricerca per eliminare i messaggi non confermati modificandone lo stato in confermato.

Vai a uno snapshot o a un timestamp per riprodurre i messaggi in una sottoscrizione. Questa guida mostra esempi di come riprodurre i messaggi Pub/Sub riconosciuti in precedenza utilizzando la funzionalità di ricerca.


Per seguire le indicazioni dettagliate per questa attività direttamente nella console Google Cloud, fai clic su Aiuto:

Aiuto


Prima di iniziare

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Configura un progetto nella console.

    Configurare un progetto

    Fai clic per:

    • Crea o seleziona un progetto.
    • Abilita l'API Pub/Sub per quel progetto.

    Puoi visualizzare e gestire queste risorse in qualsiasi momento nella console.

  3. Installa Google Cloud CLI.
  4. Per initialize gcloud CLI, esegui questo comando:

    gcloud init
  5. Configura un progetto nella console.

    Configurare un progetto

    Fai clic per:

    • Crea o seleziona un progetto.
    • Abilita l'API Pub/Sub per quel progetto.

    Puoi visualizzare e gestire queste risorse in qualsiasi momento nella console.

  6. Installa Google Cloud CLI.
  7. Per initialize gcloud CLI, esegui questo comando:

    gcloud init

Utilizzo dell'interfaccia a riga di comando di gcloud

Il modo più semplice per utilizzare gcloud è Cloud Shell . Puoi anche utilizzare lo strumento a riga di comando fornito con Google Cloud CLI. I prerequisiti di configurazione vengono soddisfatti automaticamente per gcloud CLI se crei una nuova istanza di macchina Compute Engine con ambiti di accesso che includono tutte le API Cloud e l'immagine Debian predefinita. Il modo più semplice per crearlo è tramite l'interfaccia utente di Compute Engine. Per la parte restante di questo documento, presupporremo che utilizzi uno di questi strumenti a riga di comando.

Per ulteriori informazioni sull'uso di gcloud, consulta la guida rapida di gcloud. Consulta anche la sezione gcloud pubsub nel riferimento gcloud per un elenco completo dei comandi gcloud di Pub/Sub.

Creazione e ricerca di snapshot

Crea un argomento e una sottoscrizione. Per una migliore interattività, usa una breve scadenza di conferma:

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

Finora non è stato confermato nessun messaggio nella sottoscrizione. Acquisisci questo stato creando uno snapshot:

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

Ora pubblica, esegui il pull 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 la sottoscrizione allo snapshot. Tieni presente che il messaggio potrebbe non essere recapitato immediatamente: Pub/Sub non garantisce la latenza di consegna del messaggio. Tuttavia, viene garantito che i messaggi conservati nello snapshot vengano recapitati 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 per lo stesso snapshot, a condizione che l'argomento della sottoscrizione sia uguale a quello 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 pull da seek-demo-sub2 ora restituirà messaggi pubblicati prima della creazione di seek-demo-sub2:

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

Al termine dell'operazione, pulisci:

gcloud pubsub snapshots delete my-snapshot

Esegui la ricerca fino a un timestamp

Un altro modo per riprodurre i messaggi che sono stati confermati consiste nel 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 vuoi cercare un timestamp, non uno snapshot.

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

Ora pubblica, esegui il pull 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 alcun messaggio:

gcloud pubsub subscriptions pull seek-demo-sub

Ora cerca la sottoscrizione indietro nel tempo per recuperare il messaggio. Tieni presente che i flag aritmetici 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)

Un pull successivo dovrebbe restituire di nuovo il messaggio:

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

Puoi anche utilizzare la funzionalità di ricerca per saltare la consegna di tutti i messaggi pubblicati prima di un determinato momento, ad esempio l'ora corrente. A questo scopo, cerca la sottoscrizione all'ora attuale per contrassegnare tutti i messaggi passati confermati:

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 nella propagazione (circa 60 secondi), il messaggio non verrà più recapitato. Puoi verificarlo eseguendo ripetutamente il comando pull senza confermare il messaggio:

gcloud pubsub subscriptions pull seek-demo-sub

Utilizzo della console Google Cloud

Puoi creare snapshot o eseguire la ricerca di 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

  1. Nella console Google Cloud, vai alla pagina Abbonamenti a Pub/Sub.

    Vai alla pagina Abbonamenti

  2. Seleziona un abbonamento dall'elenco.

  3. Fai clic su Crea snapshot.

  4. Inserisci un ID per lo snapshot, quindi fai clic su Crea per salvare.

Gli snapshot possono essere visualizzati nella pagina degli snapshot della console Google Cloud. Puoi anche gestire gli snapshot nella pagina dei dettagli di un singolo argomento.

Riprodurre di nuovo un abbonamento

La finestra di dialogo Riproduci messaggi ti consente di cercare un punto temporale precedente o un'istantanea salvata. Per aprire la finestra di dialogo:

  1. Nella console Google Cloud, vai alla pagina Abbonamenti a Pub/Sub.

    Vai alla pagina Abbonamenti

  2. Seleziona un abbonamento dall'elenco.

  3. Fai clic su Riproduci messaggi.

  4. In Ricerca, seleziona A un punto temporale precedente o A un'istantanea, poi seleziona il punto temporale o l'istantanea da cercare.

  5. Fai clic su Cerca per riprodurre i messaggi.

Com'è andata?

Tieni presente che ulteriori risorse e link sono disponibili nella pagina di assistenza di Pub/Sub.

Passaggi successivi

Vedi Riprodurre di nuovo ed eliminare i messaggi.