Quando un messaggio viene recapitato a un sottoscrittore pull, quest'ultimo deve elaborare e confermare (ACK) il messaggio entro la scadenza della conferma. In caso contrario, l'abbonato deve estendere la scadenza con una chiamata per modificare la scadenza per l'acknowledgment.
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 è stato ancora confermato. Per impostazione predefinita, le librerie client possono estendere la scadenza a un'ora inviando richieste periodiche modifyAckDeadline.Le librerie client di alto livello per Python, Go, Java e .NET utilizzano il 99° percentile del ritardo di conferma per determinare la durata di ogni estensione.
La gestione dei leasing ti consente di avere un controllo più granulare sulla scadenza per l'acknowledgment dei messaggi rispetto alla configurazione della proprietà a livello di abbonamento. Se utilizzi solo la scadenza per l'acknowledgment a livello di abbonamento, devi bilanciare il compromesso tra un valore basso e uno alto. Un valore basso aumenta la probabilità di duplicati e un valore elevato ritarda la restituzione 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 un abbonamento, inclusa la scadenza di conferma, consulta Proprietà degli abbonamenti.
Configurazione della gestione dei leasing
Puoi configurare le seguenti proprietà nelle librerie client di alto livello per controllare la gestione del leasing.
Periodo massimo di estensione del riconoscimento. Il periodo di tempo massimo per la quale puoi estendere la scadenza per il riconoscimento di un messaggio utilizzando la richiesta
modify acknowledgment deadline
. Questa proprietà consente di determinare per quanto tempo i client sottoscrittori devono elaborare i messaggi.Durata massima per ogni estensione di conferma. Il periodo di tempo massimo entro il quale estendere la scadenza per l'acknowledgment di ciascuna delle richieste
modify acknowledgment deadline
. Questa proprietà consente di definire il tempo impiegato da Pub/Sub per riconsegnare un messaggio. Il ricoinvolgimento si verifica quando il primo sottoscrittore che elabora il messaggio si arresta in modo anomalo o non è più in grado di inviare la richiestamodify acknowledgment deadline
.Durata minima per ogni estensione di conferma. Il periodo minimo di tempo entro il quale estendere la scadenza per l'invio del riconoscimento per ciascuna delle richieste
modify acknowledgment deadline
. Questa proprietà consente di specificare il tempo minimo che deve trascorrere prima che venga eseguita la restituzione di un messaggio.
Non è garantito il rispetto delle scadenze per i riconoscimenti, a meno che non attivi la consegna exactly-once.
Gestione manuale delle scadenze di ack
Per evitare la scadenza e la restituzione 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 conferma. 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 la gestione dei leasing:
C#
Prima di provare questo esempio, segui le istruzioni di configurazione C# riportate 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 riportate nella guida rapida all'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 riportate nella Guida rapida all'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 riportate nella guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub per Python.
Ruby
Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby riportate nella guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Ruby Pub/Sub.
Passaggi successivi
Scopri le altre opzioni di pubblicazione che puoi configurare per un abbonamento:
Gestire gli errori relativi ai messaggi con il criterio di ripetizione dell'abbonamento
Inoltrare i messaggi non recapitati a un argomento messaggi non recapitabili
Riprodurre i messaggi per i quali è stato ricevuto l'acknowledgement o eliminare i messaggi