Questa pagina mostra come avviare e monitorare le operazioni di ricerca per gli abbonamenti Lite.
La funzionalità di ricerca di Pub/Sub Lite consente di ripetere ed eliminare definitivamente i messaggi. Ha gli stessi casi d'uso di ricerca Pub/Sub. A differenza di Pub/Sub, non è necessario configurare argomenti o sottoscrizioni Lite per utilizzare la ricerca senza dover configurare ad accesso meno frequente per ridurre i costi di archiviazione.
La propagazione della ricerca ai sottoscrittori può essere monitorata utilizzando un operazione a lunga esecuzione. Si tratta di un pattern API utilizzato dai prodotti Google Cloud per monitorare l'avanzamento per attività di lunga durata.
Avvio della ricerca
Le operazioni di ricerca di Pub/Sub Lite vengono avviate out-of-band (ovvero dall'interfaccia a riga di comando Google Cloud o dall'API Pub/Sub Lite separata) e propagate ai subscriber. Gli abbonati online saranno notificati della ricerca e della reazione mentre sono in diretta. Gli abbonati offline reagire alla ricerca quando sono online.
Devi specificare una località di destinazione per la ricerca, che può essere una delle seguenti:
- Inizio del backlog dei messaggi: riproduce tutti i messaggi archiviati. Tieni presente che l'importo del backlog disponibile è determinato il periodo di conservazione dei messaggi di argomento Lite e e capacità di archiviazione.
- End of message backlog (Fine coda di messaggi): elimina i messaggi ignorando tutti quelli attualmente pubblicati.
- Pubblica timestamp: rimanda al primo messaggio con un valore (generato dal server) timestamp di pubblicazione maggiore o uguale al timestamp specificato. In caso contrario, il messaggio può essere localizzato, si estende fino alla fine del backlog dei messaggi. Per i messaggi successivi è garantito che il timestamp di pubblicazione sia maggiore o uguale al timestamp specificato, ad eccezione dei timestamp specificati che si trovano nel futuro.
- Timestamp evento: vai al primo messaggio con un evento (specificato dall'utente) maggiore o uguale al timestamp specificato. Se il messaggio non è presente alla fine del backlog dei messaggi. Come timestamp degli eventi forniti dall'utente, i messaggi successivi potrebbero avere timestamp evento inferiori a all'ora specificata e devono essere filtrati dal cliente, se necessario. Se per i messaggi non è impostato un timestamp evento, pertanto i relativi timestamp di pubblicazione vengono utilizzati come alternativa.
Puoi avviare una ricerca di un abbonamento Lite con Google Cloud CLI o l'API Pub/Sub Lite.
gcloud
Per cercare una sottoscrizione Lite, utilizza
gcloud pubsub lite-subscriptions seek
:
gcloud pubsub lite-subscriptions seek SUBSCRIPTION_ID \ --location=LITE_LOCATION \ (--publish-time=PUBLISH_TIME | --event-time=EVENT_TIME | \ --starting-offset=STARTING_OFFSET) \ [--async]
Sostituisci quanto segue:
SUBSCRIPTION_ID: l'ID della sottoscrizione Lite
LITE_LOCATION: la località della sottoscrizione Lite
PUBLISH_TIME: il timestamp di pubblicazione per la ricerca
EVENT_TIME: il timestamp dell'evento fino al quale eseguire la ricerca
STARTING_OFFSET:
beginning
oend
Vedi gcloud topic datetimes
per
informazioni sui formati dell'ora.
Se specifichi il flag --async
e la richiesta ha esito positivo, il comando
visualizza l'ID dell'operazione di ricerca:
Check operation [projects/PROJECT_NUMBER/locations/LITE_LOCATION/operations/OPERATION_ID] for status.
Utilizza la
gcloud pubsub lite-operations describe
per ottenere lo stato dell'operazione.
REST
Per richiedere un abbonamento Lite, invia una richiesta POST
come la seguente:
POST https://REGION-pubsublite.googleapis.com/v1/admin/projects/PROJECT_NUMBER/locations/LITE_LOCATION/subscriptions/SUBSCRIPTION_ID:seek Authorization: Bearer $(gcloud auth print-access-token)
Sostituisci quanto segue:
REGION: la regione in cui si trova l'abbonamento Lite
PROJECT_NUMBER: il numero del progetto con la versione Lite abbonamento
LITE_LOCATION: la posizione dell'abbonamento Lite
SUBSCRIPTION_ID: l'ID della sottoscrizione Lite
Per andare all'inizio o alla fine del backlog dei messaggi, imposta quanto segue nel corpo della richiesta:
{ "namedTarget": NAMED_TARGET }
Sostituisci quanto segue:
- NAMED_TARGET:
TAIL
per l'inizio oHEAD
per la fine di il backlog dei messaggi.
Per eseguire la ricerca in base a un timestamp di pubblicazione, imposta i seguenti campi nel corpo della richiesta:
{ "timeTarget": { "publishTime": TIMESTAMP } }
Specifica "eventTime"
per eseguire la ricerca fino a un timestamp dell'evento.
Sostituisci quanto segue:
- TIMESTAMP: un timestamp in formato UTC RFC 3339, con risoluzione in nanosecondi e fino a nove cifre decimali. Esempi:
"2014-10-02T15:01:23Z"
e"2014-10-02T15:01:23.045123456Z"
.
Se la richiesta ha esito positivo, la risposta è un'operazione a lunga esecuzione in JSON formato:
{ "name": projects/PROJECT_NUMBER/locations/LITE_LOCATION/operations/OPERATION_ID, ... }
Vai
Prima di provare questo esempio, segui le istruzioni di configurazione di Go in Guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub Go.
Java
Prima di eseguire questo esempio, segui le istruzioni di configurazione di Java in Librerie client Pub/Sub Lite.
Python
Prima di eseguire questo esempio, segui le istruzioni di configurazione di Python in Librerie client Pub/Sub Lite.
Se la richiesta di ricerca ha esito positivo, la risposta è un ID operazione a lunga esecuzione. Leggi le informazioni sul monitoraggio della propagazione della ricerca qui sotto se vuoi sapere quando gli iscritti hanno reagito alla ricerca.
Client supportati
Le operazioni di ricerca richiedono sottoscrittori che utilizzano quanto segue Librerie client di Pub/Sub Lite e versioni minime:
- java-pubsublite: versione 0.15.0.
- java-pubsublite-kafka: versione 0.6.0. Per i consumer deve inoltre essere attivato il commit automatico.
- python-pubsublite: versione 0.6.0.
- google-cloud-go: pubsublite versione 0.10.0.
Le operazioni di ricerca non funzionano quando si utilizza Pub/Sub Lite Apache Beam o Apache Spark perché questi che eseguono il proprio tracciamento degli offset all'interno delle partizioni. La soluzione alternativa consiste nello svuotare, cercare e riavviare i flussi di lavoro.
Il servizio Pub/Sub Lite è in grado di rilevare il client di un sottoscrittore che
non supporta le operazioni di ricerca (ad esempio, una versione precedente della libreria client o
framework non supportato) e interromperà la ricerca con un FAILED_PRECONDITION
.
Monitoraggio della propagazione della ricerca
Se viene restituito un ID operazione a lunga esecuzione per la richiesta di ricerca iniziale, indica che la ricerca è stata registrata correttamente nel servizio Pub/Sub Lite e alla fine si propagherà ai sottoscrittori (se il client è supportato, sopra). L'operazione monitora questa propagazione e viene completata una volta sottoscrittori hanno reagito alla ricerca, per tutte le partizioni.
Se gli abbonati sono online, potrebbero trascorrere fino a 30 secondi prima che ricevano il cerca la notifica. Le notifiche di ricerca vengono inviate in modo indipendente per ogni partizione pertanto le partizioni non possono reagire alla ricerca nello stesso istante. Se gli abbonati sono offline, l'operazione di ricerca verrà completata non appena saranno online.
Se una chiamata di ricerca precedente non ha terminato la propagazione ai sottoscrittori, è stata interrotta e sostituita dalla nuova operazione di ricerca. Cerca metadati operazione scade dopo 30 giorni, interrompendo di fatto eventuali operazioni di ricerca incomplete.
Cerca stato dell'operazione
Puoi ottenere lo stato di un'operazione di ricerca utilizzando Google Cloud CLI oppure l'API Pub/Sub Lite.
gcloud
Per ottenere i dettagli di un'operazione Lite, utilizza
gcloud pubsub lite-operations describe
:
gcloud pubsub lite-operations describe OPERATION_ID \ --location=LITE_LOCATION
Sostituisci quanto segue:
OPERATION_ID: l'ID dell'operazione Lite
LITE_LOCATION: la posizione dell'operazione Lite
Se la richiesta ha esito positivo, la riga di comando visualizza i metadati relativi Operazione Lite:
metadata: '@type': type.googleapis.com/google.cloud.pubsublite.v1.OperationMetadata createTime: '2021-01-02T03:04:05Z' target: projects/PROJECT_NUMBER/locations/LITE_LOCATION/subscriptions/SUBSCRIPTION_ID verb: seek name: projects/PROJECT_NUMBER/locations/LITE_LOCATION/operations/OPERATION_ID
REST
Per ottenere i dettagli di un'operazione Lite, invia una richiesta GET
come il
seguenti:
GET https://REGION-pubsublite.googleapis.com/v1/admin/projects/PROJECT_NUMBER/locations/LITE_LOCATION/operations/OPERATION_ID Authorization: Bearer $(gcloud auth print-access-token)
Sostituisci quanto segue:
REGION: la regione in cui si trova l'operazione Lite
PROJECT_NUMBER: il numero del progetto con la versione Lite operazione
LITE_LOCATION: la posizione dell'operazione Lite
OPERATION_ID: l'ID dell'operazione Lite
Se la richiesta ha esito positivo, la risposta è un'operazione a lunga esecuzione in JSON formato:
{ "name": projects/PROJECT_NUMBER/locations/LITE_LOCATION/operations/OPERATION_ID, ... }
Operazioni di ricerca elenco
Le operazioni di ricerca completate e attive possono essere elencate utilizzando Google Cloud CLI oppure l'API Pub/Sub Lite.
gcloud
Per elencare le operazioni Lite in un progetto, utilizza la classe
gcloud pubsub lite-operations list
:
gcloud pubsub lite-operations list \
--location=LITE_LOCATION \
[--subscription=SUBSCRIPTION] \
[--done=DONE] \
[--limit=LIMIT]
Sostituisci quanto segue:
LITE_LOCATION: la località in cui si trovano le operazioni Lite
SUBSCRIPTION: filtra le operazioni in base all'abbonamento Lite
DONE:
true
per includere solo le operazioni complete,false
per includere solo le operazioni attiveLIMIT: un numero intero per limitare il numero di operazioni restituite
Se la richiesta ha esito positivo, la riga di comando visualizza un riepilogo operazioni:
OPERATION_ID TARGET CREATE_TIME DONE ERROR_CODE MESSAGE operation2 projects/PROJECT_NUMBER/locations/LITE_LOCATION/subscriptions/SUBSCRIPTION_ID 2021-05-06T07:08:00Z True operation1 projects/PROJECT_NUMBER/locations/LITE_LOCATION/subscriptions/SUBSCRIPTION_ID 2021-01-02T03:04:00Z True
REST
Per elencare le operazioni Lite in un progetto, invia una richiesta GET
come la seguente:
GET https://REGION-pubsublite.googleapis.com/v1/admin/projects/PROJECT_NUMBER/locations/LITE_LOCATION/operations Authorization: Bearer $(gcloud auth print-access-token)
Sostituisci quanto segue:
REGION: la regione in cui si trovano le operazioni Lite
PROJECT_NUMBER: il numero del progetto con la versione Lite suite operativa
LITE_LOCATION: la località in cui si trovano le operazioni Lite
Se la richiesta ha esito positivo, la risposta è un elenco di operazioni Lite in Formato JSON:
{ "operations": [ { "name": "projects/PROJECT_NUMBER/locations/LITE_LOCATION/operations/OPERATION_ID", ... }, { "name": "projects/PROJECT_NUMBER/locations/LITE_LOCATION/operations/OPERATION_ID", ... } ] }