Gli abbonati potrebbero non essere in grado di gestire i messaggi per una serie di motivi. Ad esempio, potrebbero verificarsi problemi temporanei durante il recupero dei dati necessari per elaborare un messaggio. In alternativa, un messaggio potrebbe essere in un formato che il sottoscrittore non si aspetta.
Per gestire i messaggi non recapitabili che i sottoscrittori non possono riconoscere, Pub/Sub può inoltrarli a un argomento messaggi non recapitabili (noto anche come coda messaggi non recapitabili).
Prima di iniziare
Crea un argomento per la configurazione dell'argomento messaggi non recapitabili.
In alternativa, se segui tutte le istruzioni riportate in questa pagina dall'inizio alla fine, puoi creare l'argomento in un passaggio successivo.
Ruoli obbligatori
Per ottenere le autorizzazioni
necessarie per gestire argomenti e abbonamenti,
chiedi all'amministratore di concederti il ruolo IAM Pub/Sub Editor (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 un abbonamento in un progetto e collegarlo a un argomento che si trova in un altro progetto. Assicurati di disporre delle autorizzazioni necessarie per ogni progetto.
Come funzionano gli argomenti messaggi non recapitabili
Quando un'applicazione sottoscrittore non riesce a confermare la ricezione di un messaggio, Pub/Sub ritenta la consegna fino alla scadenza della conferma o del messaggio. Dopo un numero di tentativi di consegna configurato approssimativamente, Pub/Sub può inoltrare il messaggio non recapitabile a un argomento messaggi non recapitabili.
Quando Pub/Sub inoltra un messaggio non recapitabile, racchiude il messaggio originale in uno nuovo e aggiunge attributi che identificano la sottoscrizione di origine. Il messaggio viene quindi inviato all'argomento messaggi non recapitabili specificato. Una sottoscrizione separata collegata all'argomento messaggi non recapitabili può quindi ricevere questi messaggi inoltrati per l'analisi e il debug offline.
Come vengono calcolati i tentativi di consegna massimi
Pub/Sub conteggia i tentativi di consegna solo quando un argomento messaggi non recapitabili è configurato correttamente e include le autorizzazioni IAM corrette.
Il numero massimo di tentativi di consegna è approssimativo perché Pub/Sub inoltra i messaggi non recapitabili con il criterio "best effort". Il servizio potrebbe inoltrare un messaggio dopo un numero di tentativi inferiore a quello configurato oppure potrebbe tentare la consegna altre volte prima dell'inoltro.
Il numero di tentativi di consegna tracciati per un messaggio potrebbe anche essere reimpostato su zero, soprattutto per una sottoscrizione pull con sottoscrittori inattivi. Di conseguenza, i messaggi potrebbero essere inviati al client abbonato più volte rispetto al numero massimo di tentativi di consegna configurato.
Proprietà dell'argomento messaggi non recapitabili
Puoi impostare le seguenti proprietà di abbonamento in un argomento messaggi non recapitabili.
Numero massimo di tentativi di invio: un valore numerico che indica il numero di tentativi di invio effettuati da Pub/Sub per un messaggio specifico. Se il client abbonato non può confermare la ricezione del messaggio entro il numero configurato di tentativi di consegna, il messaggio viene inoltrato a un argomento messaggi non recapitabili.
- Valore predefinito = 5
- Valore massimo = 100
- Valore minimo = 5
Progetto con l'argomento messaggi non recapitabili: se l'argomento messaggi non recapitabili si trova in un progetto diverso dall'abbonamento, devi specificare il progetto con l'argomento messaggi non recapitabili. Imposta l'argomento messaggi non recapitabili su un argomento diverso da quello a cui è associato l'abbonamento.
Configurare un argomento messaggi non recapitabili
I passaggi seguenti descrivono il flusso di lavoro per l'utilizzo degli argomenti dead letter.
Crea un argomento (da utilizzare come argomento messaggi non recapitabili).
Crea una sottoscrizione per l'argomento messaggi non recapitabili.
Attiva l'opzione Messaggi non recapitabili per il tuo abbonamento.
Allega l'argomento creato in precedenza alla sottoscrizione.
Concedi i ruoli richiesti per utilizzare gli argomenti messaggi non recapitabili al tuoaccount di serviziot Pub/Sub.
Crea un argomento da utilizzare con gli argomenti messaggi non recapitabili
Se hai già creato un argomento da utilizzare per l'abbonamento, puoi saltare questo passaggio.
Nella console Google Cloud , vai alla pagina Argomenti.
Fai clic su Crea argomento.
Inserisci un ID argomento, ad esempio
my-test-topic.Mantieni l'opzione per l'abbonamento predefinito e fai clic su Crea.
Impostare un argomento messaggi non recapitabili in una sottoscrizione
Puoi impostare un argomento messaggi non recapitabili su un abbonamento nuovo o esistente.
Impostare un argomento messaggi non recapitabili in una nuova sottoscrizione
Puoi creare una sottoscrizione e impostare un argomento messaggi non recapitabili utilizzando la consoleGoogle Cloud , Google Cloud CLI, le librerie client o l'API Pub/Sub.
Console
Per creare una sottoscrizione e impostare un argomento messaggi non recapitabili, completa i seguenti passaggi:
Nella console Google Cloud , vai alla pagina Sottoscrizioni.
Fai clic su Crea sottoscrizione.
Inserisci l'ID abbonamento.
Scegli l'argomento che vuoi utilizzare con l'abbonamento. La sottoscrizione riceve i messaggi dall'argomento. Questo non è l'argomento messaggi non recapitabili. Lo sceglierai nel passaggio successivo.
Nella sezione Messaggi non recapitabili, seleziona Abilita messaggi non recapitabili.
Scegli un argomento messaggi non recapitabili dal menu a discesa.
Se l'argomento messaggi non recapitabili scelto non ha un abbonamento, il sistema ti chiede di crearne uno.
Nel campo Numero massimo di tentativi di consegna, specifica un numero intero compreso tra 5 e 100.
Fai clic su Crea.
Fai clic sul riquadro Dettagli per identificare eventuali attività possibili. Se uno degli elementi mostra un'icona di errore , fai clic sull'attività per risolvere il problema.

gcloud
Per creare una sottoscrizione e impostare un argomento messaggi non recapitabili, utilizza il comando
gcloud pubsub subscriptions create:
gcloud pubsub subscriptions create subscription-id \ --topic=topic-id \ --dead-letter-topic=dead-letter-topic-name \ [--max-delivery-attempts=max-delivery-attempts] \ [--dead-letter-topic-project=dead-letter-topic-project]
C++
Prima di provare questo esempio, segui le istruzioni di configurazione di C++ nella guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub C++.
C#
Prima di provare questo esempio, segui le istruzioni di configurazione di C# nella guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub C#.
Go
L'esempio seguente utilizza la versione principale della libreria client Go Pub/Sub (v2). Se utilizzi ancora la libreria v1, consulta la guida alla migrazione alla v2. Per visualizzare un elenco di esempi di codice della versione 1, consulta gli esempi di codice deprecati.
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Go.
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.
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.
PHP
Prima di provare questo esempio, segui le istruzioni di configurazione di PHP nella guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub PHP.
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 Python di Pub/Sub.
Ruby
L'esempio seguente 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 deprecati.
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.
Ruby
Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby nella guida rapida di Pub/Sub per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Ruby.
Per eseguire l'autenticazione in Pub/Sub, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Impostare un argomento messaggi non recapitabili per un abbonamento esistente
Puoi aggiornare una sottoscrizione e impostare un argomento messaggi non recapitabili utilizzando la consoleGoogle Cloud , gcloud CLI, le librerie client o l'API Pub/Sub.
Console
Per aggiornare una sottoscrizione e impostare un argomento messaggi non recapitabili, completa i seguenti passaggi.
Nella console Google Cloud , vai alla pagina Sottoscrizioni.
Accanto all'abbonamento da aggiornare, fai clic su Altre azionimore_vert.
Nel menu contestuale, seleziona Modifica.

Nella sezione Messaggi non recapitabili, seleziona Abilita messaggi non recapitabili.
Scegli un argomento messaggi non recapitabili dal menu a discesa.
Se l'argomento messaggi non recapitabili scelto non ha un abbonamento, il sistema ti chiede di crearne uno.
Nel campo Numero massimo di tentativi di consegna, specifica un numero intero compreso tra 5 e 100.
Fai clic su Aggiorna.
Fai clic sul riquadro Dettagli per identificare eventuali attività possibili. Se uno degli elementi mostra un'icona di errore , fai clic sull'attività per risolvere il problema.

gcloud
Per aggiornare un abbonamento e impostare un argomento messaggi non recapitabili, utilizza il
comando gcloud pubsub subscriptions update:
gcloud pubsub subscriptions update subscription-id \ --dead-letter-topic=dead-letter-topic-name \ [--max-delivery-attempts=max-delivery-attempts] \ [--dead-letter-topic-project=dead-letter-topic-project]
C++
Prima di provare questo esempio, segui le istruzioni di configurazione di C++ nella guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub C++.
C#
Prima di provare questo esempio, segui le istruzioni di configurazione di C# nella guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub C#.
Go
L'esempio seguente utilizza la versione principale della libreria client Go Pub/Sub (v2). Se utilizzi ancora la libreria v1, consulta la guida alla migrazione alla v2. Per visualizzare un elenco di esempi di codice della versione 1, consulta gli esempi di codice deprecati.
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida all'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Pub/Sub Go.
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.