Quando un messaggio viene recapitato a un sottoscrittore pull, quest'ultimo deve elaborare e confermare (ACK) il messaggio entro la scadenza della conferma di ricezione. In caso contrario, l'abbonato deve estendere la scadenza con una chiamata per modificare la scadenza della conferma.
Le librerie client di alto livello di Pub/Sub forniscono la gestione del lease come funzionalità che estende automaticamente la scadenza di un messaggio che non è ancora stato riconosciuto. 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 e Java utilizzano il 99° percentile del ritardo di riconoscimento per determinare la durata di ogni estensione.
La gestione dei contratti di locazione ti consente di avere un controllo più granulare sulla scadenza di riconoscimento per i messaggi rispetto alla configurazione della proprietà a livello di sottoscrizione. Se utilizzi solo la scadenza di conferma a livello di abbonamento, devi trovare un equilibrio 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 giusto può essere difficile, soprattutto quando il tempo di elaborazione previsto per i diversi messaggi varia notevolmente.
Per ulteriori informazioni sulle proprietà di un abbonamento, inclusa la scadenza di conferma, consulta Proprietà dell'abbonamento.
Configurazione della gestione dei contratti di locazione
Puoi configurare le seguenti proprietà nelle librerie client di alto livello per controllare la gestione dei lease.
Periodo massimo di estensione della conferma. Il periodo di tempo massimo per cui la libreria client può estendere la scadenza di riconoscimento di un messaggio utilizzando la richiesta
modify acknowledgment deadline
. Questa proprietà ti consente di determinare per quanto tempo vuoi che i client sottoscrittori elaborino i messaggi.Durata massima per ogni estensione di ringraziamento. L'intervallo di tempo massimo entro il quale estendere la scadenza di conferma per ciascuna delle
modify acknowledgment deadline
richieste. Questa proprietà consente di definire la quantità di tempo necessario a Pub/Sub per inviare nuovamente un messaggio. La nuova consegna si verifica quando il primo abbonato che elabora il messaggio si arresta in modo anomalo o non è più integro e non è più in grado di inviare la richiestamodify acknowledgment deadline
.Durata minima per ogni estensione di ringraziamento. Il periodo di tempo minimo entro il quale estendere la scadenza di conferma 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 il rispetto delle scadenze di riconoscimento, a meno che non attivi la consegna "exactly-once".
Gestione manuale delle scadenze ACK
Per evitare la scadenza e la nuova consegna dei messaggi quando utilizzi il pull unario o le librerie client di basso livello, utilizza la richiesta modify acknowledgment deadline
per estendere le scadenze di riconoscimento. Fanno eccezione le librerie client di alto livello Go e C++, che forniscono la gestione del leasing quando si utilizza il pull unario. Consulta i seguenti esempi per il pull unario con gestione del lease:
C#
Prima di provare questo esempio, segui le istruzioni di configurazione di C# nella guida rapida all'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 nella guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Java di Pub/Sub.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella Guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Node.js.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Python.
Ruby
Il seguente esempio utilizza la libreria client Ruby Pub/Sub 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 nella guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Ruby.
Passaggi successivi
Scopri le altre opzioni di pubblicazione che puoi configurare per un abbonamento:
Gestire gli errori dei messaggi con il criterio di nuovi tentativi di abbonamento
Inoltrare i messaggi non recapitati a un argomento messaggi non recapitabili
Riprodurre i messaggi riconosciuti in precedenza o eliminarli