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.

Prima di iniziare

  1. Set up a Trusted Cloud console project.

    Set up a 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 Trusted Cloud console.

  2. Install the Google Cloud CLI.

  3. Configura gcloud CLI per utilizzare la tua identità federata.

    Per ulteriori informazioni, vedi Accedere a gcloud CLI con la tua identità federata.

  4. Per inizializzare gcloud CLI, esegui questo comando:

    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 gcloud CLI se crei una nuova istanza 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 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 producono 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

    1. Nella Trusted Cloud console, vai alla pagina Sottoscrizioni Pub/Sub.

      Vai alla pagina degli abbonamenti

    2. Seleziona un abbonamento dall'elenco.

    3. Fai clic su Crea snapshot.

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

    Gli snapshot possono essere visualizzati nella pagina Snapshot nella console Trusted 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:

    1. Nella Trusted Cloud console, vai alla pagina Sottoscrizioni Pub/Sub.

      Vai alla pagina degli abbonamenti

    2. Seleziona un abbonamento dall'elenco.

    3. Fai clic su Riproduci messaggi.

    4. 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.

    5. 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.