Criterio di ripetizione della sottoscrizione

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

Se Pub/Sub tenta di recapitare un messaggio, ma l'abbonato non può confermarlo, Pub/Sub tenta automaticamente di inviarlo di nuovo. Questo tentativo di nuovo invio è noto come policy di ripetizione della sottoscrizione. Non è una funzionalità che puoi attivare o disattivare. Tuttavia, puoi scegliere il tipo di policy di ripetizione da utilizzare.

Prima di iniziare

  • Crea un argomento da utilizzare con la sottoscrizione che contiene una policy di ripetizione della sottoscrizione.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per gestire argomenti e sottoscrizioni, 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 una delle seguenti policy di ripetizione: nuovo invio immediato o backoff esponenziale. Per impostazione predefinita, le sottoscrizioni utilizzano il nuovo invio immediato.

Nuovo invio immediato

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

Per risolvere i problemi di nuovo invio immediato, Pub/Sub consente di configurare una policy di backoff esponenziale.

Backoff esponenziale

Il backoff esponenziale consente di aggiungere ritardi progressivamente più lunghi tra i nuovi 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 dalle 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 recapitare altri messaggi, anche se i messaggi precedenti hanno ricevuto conferme negative (a meno che non utilizzi il recapito di messaggi ordinati).

Utilizza la policy di ripetizione per ritardare il recapito e l'elaborazione di un sottoinsieme di messaggi per tenere conto di un'incapacità temporanea di elaborare alcuni messaggi al momento del recapito. La funzionalità viene applicata in base al principio del "best effort" e la policy di ripetizione viene valutata separatamente per ogni messaggio.

Non è consigliabile utilizzare questa funzionalità per introdurre ritardi intenzionali nel recapito dei messaggi. Se confermi negativamente (nack) un numero elevato di messaggi in una sottoscrizione configurata con una policy di ripetizione, è possibile che alcuni di questi messaggi vengano recapitati con un backoff inferiore o nullo. Pub/Sub potrebbe anche rallentare il recapito di tutti i messaggi se confermi negativamente un numero elevato di messaggi.

Se devi pianificare i recapiti, valuta la possibilità di utilizzare Cloud Tasks.

Configurare il backoff esponenziale

Console

Quando crei una nuova sottoscrizione, puoi configurare una policy di ripetizione con backoff esponenziale seguendo questi passaggi:

  1. Nellaconsole, vai alla pagina Sottoscrizioni Pub/Sub. Cloud de Confiance

Vai alle sottoscrizioni

  1. Fai clic su Crea sottoscrizione.

  2. Nel campo ID sottoscrizione, inserisci un nome.

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

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

La sottoscrizione riceve i messaggi dall'argomento.

  1. Seleziona un tipo di recapito.

  2. In Policy di ripetizione, seleziona Esegui nuovo tentativo dopo il 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 una policy di ripetizione con backoff esponenziale, esegui il seguente gcloud pubsub create comando.

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 la sottoscrizione.
  • TOPIC_ID: l'ID dell'argomento a cui vuoi collegare la sottoscrizione.
  • MIN_RETRY_DELAY: il ritardo di backoff minimo per la sottoscrizione.
  • MAX_RETRY_DELAY: il ritardo di backoff massimo per la sottoscrizione.

Passaggi successivi