Quando un messaggio viene recapitato a un sottoscrittore pull, quest'ultimo deve elaborarlo e inviare un ACK (acknowledgment) entro la scadenza di acknowledgment. In caso contrario, il sottoscrittore deve estendere la scadenza con una chiamata per modificare la scadenza di acknowledgment.
Le librerie client di alto livello di Pub/Sub forniscono la gestione del leasing come funzionalità che estende automaticamente la scadenza di un messaggio per il quale non è ancora stato inviato un ACK. Per impostazione predefinita, le librerie client possono estendere la scadenza fino a un'ora inviando periodicamente modifyAckDeadline.Le librerie client di alto livello per Python, Go e Java utilizzano il 99° percentile del ritardo di acknowledgment per determinare la durata di ogni estensione.
La gestione del leasing consente di avere un controllo più granulare sulla scadenza di acknowledgment per i messaggi rispetto alla configurazione della proprietà a livello di sottoscrizione. Se utilizzi solo la scadenza di acknowledgment a livello di sottoscrizione, devi bilanciare il compromesso tra un valore basso e un valore alto. Un valore basso aumenta la probabilità di duplicati e un valore alto ritarda la nuova consegna dei messaggi non riusciti. Determinare il valore corretto può essere difficile, soprattutto quando il tempo di elaborazione previsto per i diversi messaggi varia notevolmente.
Per ulteriori informazioni sulle proprietà di una sottoscrizione, inclusa la scadenza di acknowledgment, consulta Proprietà della sottoscrizione.
Configurazione della gestione del leasing
Puoi configurare le seguenti proprietà nelle librerie client di alto livello per controllare la gestione del leasing.
Periodo massimo di estensione dell'acknowledgment. Il periodo di tempo massimo per il quale la libreria client può estendere la scadenza di acknowledgment di un messaggio utilizzando la richiesta
modify acknowledgment deadline. Questa proprietà consente di determinare per quanto tempo vuoi che i client sottoscrittori elaborino i messaggi.Durata massima per ogni estensione dell'acknowledgment. Il periodo di tempo massimo per estendere la scadenza di acknowledgment per ciascuna delle richieste
modify acknowledgment deadline. Questa proprietà consente di definire il tempo impiegato da Pub/Sub per consegnare nuovamente un messaggio. La nuova consegna si verifica quando il primo sottoscrittore che elabora il messaggio si arresta in modo anomalo o diventa non integro e non è più in grado di inviare la richiestamodify acknowledgment deadline.Durata minima per ogni estensione dell'acknowledgment. Il periodo di tempo minimo per estendere la scadenza di acknowledgment per ciascuna delle richieste
modify acknowledgment deadline. Questa proprietà consente di specificare il periodo di tempo minimo che deve trascorrere prima che venga eseguita la nuova consegna di un messaggio.
Non è garantito che le scadenze di acknowledgment vengano rispettate, a meno che non attivi la consegna exactly-once.
Gestire manualmente le scadenze di ACK
Ti consigliamo vivamente di utilizzare le librerie client di alto livello. Se non funzionano o se devi utilizzare il pull unario, utilizza la richiesta modify acknowledgment deadline per estendere le scadenze di acknowledgment.
La libreria client di alto livello C++ è un'eccezione che fornisce la gestione del leasing quando si utilizza il pull unario. Vedi i seguenti esempi per il pull unario con la gestione del leasing:
C#
Prima di provare questo esempio, segui le istruzioni di configurazione di C# in Guida rapida: utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub C# .
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java in Guida rapida: utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub Java.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js in Guida rapida: utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub Node.js.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python in Guida rapida: utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub Python.
Ruby
Il seguente esempio utilizza la libreria client Pub/Sub Ruby v3. Se utilizzi ancora la libreria v2, consulta la guida alla migrazione alla v3. Per visualizzare un elenco di esempi di codice Ruby v2, consulta gli esempi di codice ritirati.
Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby in Guida rapida: utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub Ruby.
Passaggi successivi
Scopri le altre opzioni di consegna che puoi configurare per una sottoscrizione:
Gestire gli errori dei messaggi con il criterio di nuovi tentativi della sottoscrizione
Inoltrare i messaggi non recapitati a un argomento messaggi non recapitabili
Riprodurre i messaggi per i quali è stato inviato un ACK in precedenza o eliminare i messaggi