Panoramica dell'abbonamento

Per ricevere messaggi pubblicati in un argomento, devi creare una sottoscrizione all'argomento. Solo i messaggi pubblicati nell'argomento dopo la creazione della sottoscrizione sono disponibili per i client sottoscrittori. Il client sottoscrittore riceve ed elabora i messaggi pubblicati nell'argomento. Un argomento può avere più sottoscrizioni, ma una determinata sottoscrizione appartiene a un singolo argomento.

La funzionalità di conservazione degli argomenti consente a una sottoscrizione associata a un argomento di cercare a ritroso nel tempo e riprodurre i messaggi pubblicati in precedenza. Per saperne di più sulla funzionalità, consulta l'argomento Riproduzione ed eliminazione dei messaggi.

Flusso di lavoro dell'abbonamento

  1. Dopo l'invio di un messaggio a un abbonato, quest'ultimo deve confermare la ricezione del messaggio.

  2. Se un messaggio viene inviato per la consegna e un sottoscrittore non lo ha ancora confermato, il messaggio viene definito in sospeso.

  3. Pub/Sub tenta ripetutamente di consegnare qualsiasi messaggio non ancora confermato. Tuttavia, Pub/Sub tenta di non recapitare un messaggio in sospeso a nessun altro sottoscrittore della stessa sottoscrizione.

  4. Il sottoscrittore ha a disposizione un periodo di tempo configurabile e limitato, noto come ackDeadline, per confermare il messaggio in sospeso. Dopo la scadenza, il messaggio non viene più considerato in sospeso e Pub/Sub tenta di inviarlo di nuovo.

Tipi di abbonamenti

Quando crei un abbonamento, devi specificare il tipo di distribuzione dei messaggi. Pub/Sub offre i seguenti tipi di sottoscrizioni:

  • Le sottoscrizioni pull utilizzano un client sottoscrittore per richiedere i messaggi al server Pub/Sub.

  • Le sottoscrizioni push utilizzano il server Pub/Sub per avviare richieste all'applicazione sottoscrittore per consegnare i messaggi.

  • Esporta iscrizioni esporta i tuoi messaggi direttamente in una risorsa Google Cloud. Questi abbonamenti includono:

    • Gli abbonamenti BigQuery esportano i dati in una tabella BigQuery.

    • Le sottoscrizioni Cloud Storage esportano i dati in un bucket Cloud Storage.

Per scegliere l'abbonamento corretto per le esigenze della tua attività, consulta Scegliere un tipo di abbonamento. Puoi aggiornare il tipo di pubblicazione dei messaggi per un abbonamento in qualsiasi momento dopo la sua creazione.

Proprietà di abbonamento predefinite

Per impostazione predefinita, Pub/Sub offre la consegna "at-least-once" senza garanzie di ordinamento per tutti i tipi di sottoscrizione. In alternativa, se i messaggi hanno la stessa chiave di ordinamento e si trovano nella stessa regione, puoi abilitare l'ordinamento dei messaggi. Dopo aver impostato la proprietà di ordinamento dei messaggi, il servizio Pub/Sub consegna i messaggi con la stessa chiave di ordinamento e nell'ordine in cui li riceve.

Pub/Sub supporta anche la consegna "exactly-once".

In generale, Pub/Sub recapita ogni messaggio una volta e nell'ordine in cui è stato pubblicato. Tuttavia, a volte i messaggi potrebbero essere recapitati in ordine diverso o più di una volta. Pub/Sub potrebbe riconsegnare un messaggio anche dopo che una richiesta di riconoscimento per il messaggio viene restituita correttamente. Questa nuova consegna può essere causata da problemi come riavvii lato server o problemi lato client. Pertanto, anche se rari, tutti i messaggi possono essere riinviati in qualsiasi momento.

Per gestire la consegna più di una volta, l'abbonato deve essere idempotente durante l'elaborazione dei messaggi.

Scadenza dell'abbonamento

Per impostazione predefinita, gli abbonamenti scadono dopo 31 giorni di inattività dell'abbonato o se non vengono apportati aggiornamenti all'abbonamento. Esempi di attività dell'abbonato includono connessioni aperte, pull attivi o push riusciti. Se Pub/Sub rileva l'attività di un abbonato o un aggiornamento delle proprietà dell'abbonamento, il conto alla rovescia per l'eliminazione dell'abbonamento riparte. Utilizzando le policy di scadenza dell'abbonamento, puoi configurare la durata dell'inattività o rendere l'abbonamento persistente indipendentemente dall'attività. Puoi anche eliminare un abbonamento manualmente.

Anche se puoi creare un nuovo abbonamento con lo stesso nome di uno eliminato, il nuovo abbonamento non ha alcuna relazione con quello precedente. Anche se l'abbonamento eliminato aveva molti messaggi non confermati, un nuovo abbonamento creato con lo stesso nome non avrebbe backlog (nessun messaggio in attesa di consegna) al momento della creazione.

Passaggi successivi