Criterio di ripetizione della sottoscrizione

Un abbonato potrebbe non riuscire a elaborare i messaggi per diversi motivi. Ad esempio, il sottoscrittore potrebbe riscontrare problemi temporanei nel recupero dei dati necessari oppure potrebbe ricevere un messaggio in un formato imprevisto.

Se Pub/Sub tenta di consegnare un messaggio, ma il sottoscrittore non può confermarlo, Pub/Sub tenta automaticamente di inviarlo di nuovo. Questo tentativo di riconsegna è noto come criterio di ripetizione della sottoscrizione. Questa non è una funzionalità che puoi attivare o disattivare. Tuttavia, puoi scegliere il tipo di criterio di ripetizione che vuoi utilizzare.

Prima di iniziare

  • Crea un argomento che utilizzerai con la sottoscrizione che contiene un criterio per i nuovi tentativi di sottoscrizione.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per gestire argomenti e abbonamenti, chiedi all'amministratore di concederti il ruolo IAM Editor Pub/Sub(roles/pubsub.editor) nel progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Puoi configurare il controllo dell'accesso a livello di progetto e a livello di singola risorsa. Puoi creare una sottoscrizione in un progetto e collegarla a un argomento che si trova in un altro progetto. Assicurati di disporre delle autorizzazioni necessarie per ogni progetto.

Tipi di policy di ripetizione

Quando crei e configuri la sottoscrizione per la prima volta, puoi scegliere di utilizzare uno dei seguenti criteri per i nuovi tentativi: nuova distribuzione immediata o backoff esponenziale. Per impostazione predefinita, gli abbonamenti utilizzano la riconsegna immediata.

Riconsegna immediata

Per impostazione predefinita, Pub/Sub tenta di inviare nuovamente il messaggio immediatamente (e potenzialmente allo stesso client sottoscrittore). Tuttavia, se le condizioni che hanno impedito l'invio della conferma di ricezione del messaggio non sono cambiate, la nuova consegna immediata può causare problemi. In questo caso, è possibile che Pub/Sub invii nuovamente più messaggi che non possono essere confermati.

Per risolvere i problemi di nuova consegna immediata, Pub/Sub ti consente di configurare un criterio di backoff esponenziale.

Backoff esponenziale

Il backoff esponenziale consente di aggiungere ritardi progressivamente più lunghi tra i tentativi. Dopo il primo errore di recapito, Pub/Sub attende un tempo di backoff minimo prima di riprovare. Per ogni errore consecutivo del messaggio, viene aggiunto più tempo al ritardo, fino a un ritardo massimo (0 e 600 secondi).

Gli intervalli di ritardo massimo e minimo non sono fissi e devono essere configurati in base ai fattori locali dell'applicazione.

Tieni presente le seguenti considerazioni sul backoff esponenziale:

  • Il backoff esponenziale viene attivato in base alle seguenti azioni:
    • Quando viene ricevuta una conferma negativa.
    • Quando scade la scadenza di conferma di un messaggio.
  • Il backoff esponenziale viene applicato solo per messaggio, anziché a tutti i messaggi di una sottoscrizione (globale).
  • Durante l'utilizzo del backoff esponenziale, Pub/Sub continua a inviare altri messaggi, anche se i messaggi precedenti hanno ricevuto riconoscimenti negativi (a meno che tu non stia utilizzando la distribuzione ordinata dei messaggi).

Utilizza il criterio di ripetizione per ritardare la consegna e l'elaborazione di un sottoinsieme di messaggi per far fronte a un'incapacità temporanea di elaborare alcuni messaggi al momento della consegna. La funzionalità viene applicata in base al massimo impegno e ogni messaggio viene valutato separatamente per la policy di ripetizione.

Non è consigliabile utilizzare questa funzionalità per introdurre ritardi intenzionali nella consegna dei messaggi. Se invii un riconoscimento negativo (NACK) per un numero elevato di messaggi in un abbonamento configurato con un criterio di ripetizione, è possibile che alcuni di questi messaggi vengano recapitati con un backoff inferiore o nullo. Pub/Sub potrebbe anche rallentare la distribuzione di tutti i messaggi se ricevi un riconoscimento negativo di un numero elevato di messaggi.

Se devi pianificare le consegne, valuta l'utilizzo di Cloud Tasks.

Configurare il backoff esponenziale

Console

Quando crei un nuovo abbonamento, puoi configurare un criterio per i nuovi tentativi con backoff esponenziale seguendo questi passaggi:

  1. Nella console Google Cloud , vai alla pagina Sottoscrizioni Pub/Sub.

Vai agli abbonamenti

  1. Fai clic su Crea sottoscrizione.

  2. Nel campo ID sottoscrizione, inserisci un nome.

Per informazioni su come denominare un abbonamento, consulta le linee guida per assegnare un nome a un argomento o a un abbonamento.

  1. Scegli o crea un argomento dal menu a discesa.

La sottoscrizione riceve i messaggi dall'argomento.

  1. Seleziona un tipo di pubblicazione.

  2. In Norme sui nuovi tentativi, seleziona Esegui nuovo tentativo dopo ritardo backoff esponenziale.

  3. Inserisci un backoff minimo e un backoff massimo compresi tra 0 e 600 secondi.

I valori predefiniti sono 10 secondi per il backoff minimo e 600 secondi per il backoff massimo.

  1. Fai clic su Crea.

gcloud

Per creare una nuova sottoscrizione con un criterio per i nuovi tentativi con backoff esponenziale, esegui il seguente comando gcloud pubsub create.

gcloud pubsub subscriptions create SUBSCRIPTION_ID \
  --topic=TOPIC_ID \
  --min-retry-delay=MIN_RETRY_DELAY \
  --max-retry-delay=MAX_RETRY_DELAY

Sostituisci quanto segue:

  • SUBSCRIPTION_ID: un ID univoco per l'abbonamento.
  • TOPIC_ID: l'ID dell'argomento a cui vuoi collegare l'abbonamento.
  • MIN_RETRY_DELAY: il ritardo di backoff minimo per l'abbonamento.
  • MAX_RETRY_DELAY: il ritardo di backoff massimo per l'abbonamento.

Passaggi successivi