Quando un messaggio viene recapitato a un sottoscrittore di tipo pull, il sottoscrittore deve elaborare e confermare (ack) il messaggio entro la scadenza di conferma. In caso contrario, l'abbonato deve estendere la scadenza con una chiamata per modificare la scadenza per la conferma.
Le librerie client di alto livello di Pub/Sub offrono la gestione del leasing come funzionalità che estende automaticamente la scadenza di un messaggio non ancora confermato. Per impostazione predefinita, le librerie client possono estendere la scadenza a un'ora inviando richieste modifyAckDeadline periodiche.Le librerie client di alto livello per Python, Go, Java e .Net utilizzano il 99° percentile di ritardo di conferma per determinare la lunghezza di ogni estensione.
La gestione del leasing consente di avere un controllo più granulare sulla scadenza di conferma dei messaggi rispetto alla configurazione della proprietà a livello di abbonamento. Se utilizzi solo la scadenza di conferma a livello di abbonamento, devi trovare un equilibrio tra un valore basso e uno di alto valore. Un valore basso aumenta la probabilità che si verifichino duplicati, mentre un valore elevato ritarda la riconsegna dei messaggi non riusciti. Determinare il valore giusto può essere difficile, soprattutto quando il tempo di elaborazione previsto per messaggi diversi può variare notevolmente.
Per ulteriori informazioni sulle proprietà di un abbonamento, inclusa la scadenza della conferma, consulta Proprietà degli abbonamenti.
Configurazione della gestione del leasing
Puoi configurare le seguenti proprietà nelle librerie client di alto livello per controllare la gestione del lease.
Periodo di estensione massimo della conferma. Il periodo di tempo massimo entro il quale è possibile estendere la scadenza della conferma di un messaggio utilizzando la richiesta
modify acknowledgment deadline
. Questa proprietà ti consente di determinare quanto tempo vuoi che i client del sottoscrittore elaborino i messaggi.Durata massima di ogni estensione di conferma. Il periodo di tempo massimo entro il quale estendere la scadenza di conferma per ciascuna delle richieste
modify acknowledgment deadline
. che consente di definire la quantità di tempo necessaria a Pub/Sub per recapitare un messaggio. La nuova consegna si verifica quando il primo sottoscrittore che elabora il messaggio si arresta in modo anomalo o non è integro e non è più in grado di inviare la richiestamodify acknowledgment deadline
.Durata minima per ogni estensione di conferma. Il periodo di tempo minimo entro il quale estendere la scadenza di conferma per ogni richiesta
modify acknowledgment deadline
. Questa proprietà consente di specificare la quantità minima di tempo che deve trascorrere prima che un messaggio venga recapitato nuovamente.
Non è garantito che le scadenze di conferma vengano rispettate, a meno che non abiliti la consegna "exactly-once".
Gestione manuale delle scadenze di conferma
Per evitare che i messaggi scadano e vengano recapitati nuovamente quando utilizzi il pull unario o le librerie client di basso livello, utilizza la richiesta modify acknowledgment deadline
per estendere le scadenze di conferma. Fanno eccezione le librerie client di alto livello Go e C++, che offrono la gestione del lease quando si utilizza il pull unario. Consulta i seguenti esempi di pull unario con gestione del lease:
C#
Prima di provare questo esempio, segui le istruzioni di configurazione di C# nella Guida rapida sull'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API C# di Pub/Sub.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione Java in Guida rapida sull'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Java Pub/Sub.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js in Guida rapida sull'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Node.js Pub/Sub.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python in Guida rapida sull'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Python Pub/Sub.
Ruby
Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby riportate in Guida rapida sull'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Ruby Pub/Sub.
Passaggi successivi
Scopri le altre opzioni di consegna che puoi configurare per un abbonamento:
Gestire gli errori relativi ai messaggi con il criterio per i nuovi tentativi di sottoscrizione
Inoltrare i messaggi non recapitati a un argomento messaggi non recapitabili
Riprodurre di nuovo i messaggi compromessi in precedenza o eliminare definitivamente i messaggi
Elaborare più messaggi con il controllo della contemporaneità