Riproduci di nuovo un messaggio in Pub/Sub eseguendo la ricerca fino a uno snapshot o un timestamp
Pub/Sub non può recuperare i messaggi dopo la conferma. Tuttavia, a volte potrebbe essere necessario riprodurre i messaggi confermati, ad esempio se hai eseguito una conferma errata. Quindi puoi utilizzare la funzionalità Seek per contrassegnare i messaggi confermati in precedenza come non confermati e forzare Pub/Sub a recapitarli di nuovo. Puoi anche utilizzare la funzionalità di ricerca per eliminare i messaggi non confermati modificando lo stato in confermato.
Esegui la ricerca fino a uno snapshot o esegui una ricerca fino a un timestamp per riprodurre i messaggi in una sottoscrizione. Questa guida mostra esempi di come ripetere i messaggi Pub/Sub confermati in precedenza utilizzando la funzionalità di ricerca.
Per seguire le indicazioni dettagliate per questa attività direttamente nella console Google Cloud, fai clic su Procedura guidata:
Prima di iniziare
- 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.
-
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
Utilizzo dell'interfaccia a riga di comando di gcloud
Il modo più semplice per utilizzare gcloud è in Cloud Shell . Puoi anche usare lo strumento a riga di comando fornito con Google Cloud CLI. I prerequisiti di configurazione sono soddisfatti automaticamente per gcloud CLI se per creare un nuovo Istanza macchina Compute Engine con ambiti di accesso che includono tutte le API Cloud e l'immagine Debian predefinita. La il modo più semplice per crearlo è tramite la UI di Compute Engine. Per il resto della documento, supporremo che tu stia utilizzando uno di questi strumenti a riga di comando.
Per ulteriori informazioni sull'utilizzo di gcloud, consulta la guida rapida di gcloud.
Vedi anche la sezione gcloud pubsub nella
Riferimento gcloud
per un elenco completo dei comandi gcloud
Pub/Sub.
Creazione e ricerca di snapshot
Creare un argomento e una sottoscrizione. Per una migliore interattività, usa uno Short scadenza conferma:
gcloud pubsub topics create seek-demo-topic gcloud pubsub subscriptions create seek-demo-sub --topic=seek-demo-topic --ack-deadline=10
Finora non sono stati inviati messaggi nella sottoscrizione riconosciuto. 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 restituiscono nuovi messaggi (alcuni duplicati temporanei sono possibile):
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 dei messaggi. Tuttavia, qual è è che i messaggi conservati lo snapshot verrà pubblicato 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 allo stesso snapshot, purché l'argomento della sottoscrizione è uguale all'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 pull da seek-demo-sub2
ora restituirà i messaggi pubblicati in precedenza
seek-demo-sub2
è stato creato:
gcloud pubsub subscriptions pull seek-demo-sub2 --auto-ack
Al termine, esegui la pulizia di:
gcloud pubsub snapshots delete my-snapshot
Esegui la ricerca fino a un timestamp
Un altro modo per riprodurre i messaggi confermati consiste nel cercare
timestamp. Per eseguire la ricerca fino a un timestamp, devi prima configurare la sottoscrizione
conservano i messaggi confermati utilizzando retain-acked-messages
. Se
Il campo retain-acked-messages
è impostato, Pub/Sub conserva i dati confermati
per sette giorni.
Devi eseguire questa operazione solo se vuoi eseguire la ricerca fino a un timestamp, non a un senza dover creare 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 messaggi:
gcloud pubsub subscriptions pull seek-demo-sub
Ora cerca la sottoscrizione a ritroso per recuperare il messaggio. Tieni presente che i flag aritmetici delle date sono diversi tra GNU e BSD (MacOS). più versioni 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, consulta gcloud topic datetimes.
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 il recapito di tutti i messaggi pubblicati prima di un momento specifico, come l'ora corrente. Per farlo, cerca l'abbonamento all'ora corrente per contrassegnare come confermati tutti 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 nella propagazione (circa 60 secondi), il messaggio non sarà più la consegna. Puoi verificarlo eseguendo ripetutamente il comando pull senza dare conferma del messaggio:
gcloud pubsub subscriptions pull seek-demo-sub
Utilizzo della console Cloud
Puoi creare snapshot o eseguire ricerche negli snapshot esistenti pagina dei dettagli della console Cloud. Per le regole di denominazione degli snapshot, consulta Nomi delle risorse.
Creazione di uno snapshot in corso
Nella console Google Cloud, 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.
Puoi visualizzare gli snapshot nella pagina degli snapshot della console Google Cloud. Puoi anche gestire gli snapshot pagina dei dettagli di un singolo argomento.
Riprodurre di nuovo un abbonamento
La finestra di dialogo Riproduci messaggi ti consente di eseguire la ricerca fino a un punto temporale precedente o a un'istantanea salvata. Per aprire la finestra di dialogo:
Nella console Google Cloud, vai alla pagina Sottoscrizioni Pub/Sub.
Seleziona un abbonamento dall'elenco.
Fai clic su Riproduci messaggi.
In Ricerca, seleziona A un punto temporale precedente o A uno snapshot, quindi seleziona il punto temporale o l'istantanea da cercare.
Fai clic su Cerca per riprodurre i messaggi.
Com'è andata?
Tieni presente che sono disponibili ulteriori risorse e link nella pagina di assistenza di Pub/Sub.