Panoramica dell'abbonamento

Per ricevere i messaggi pubblicati in un argomento, devi creare una sottoscrizione per quell'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 eseguire ricerche a ritroso nel tempo e riprodurre i messaggi pubblicati in precedenza. Scopri di più sulla funzionalità nell'argomento Riproduzione ed eliminazione dei messaggi.

Flusso di lavoro dell'abbonamento

  1. Dopo che un messaggio è stato inviato a un abbonato, l'abbonato deve confermarlo.

  2. Se un messaggio viene inviato per la consegna e un sottoscrittore deve ancora confermarlo, il messaggio è considerato in sospeso.

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

  4. L'abbonato ha un periodo di tempo limitato e configurabile, noto come ackDeadline, per confermare il messaggio in sospeso. Una volta trascorsa la scadenza, il messaggio non viene più considerato in sospeso e Pub/Sub tenta di recapitarlo.

Tipi di abbonamenti

Quando crei una sottoscrizione, devi specificare il tipo di recapito dei messaggi. Pub/Sub offre i seguenti tipi di abbonamenti:

  • 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 la consegna dei messaggi.

  • Esporta iscrizioni ti consente di esportare i messaggi direttamente in una risorsa Google Cloud. Queste iscrizioni includono:

    • Le iscrizioni BigQuery esportano i dati in una tabella BigQuery.

    • Gli abbonamenti 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 invio dei messaggi per una sottoscrizione in qualsiasi momento dopo la sua creazione.

Proprietà di abbonamento predefinite

Per impostazione predefinita, Pub/Sub offre la consegna "at-least-once" senza alcuna garanzia di ordinamento su tutti i tipi di sottoscrizione. In alternativa, se i messaggi hanno la stessa chiave di ordinamento e si trovano nella stessa regione, puoi attivare 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 possono essere recapitati fuori ordine o più volte. Pub/Sub potrebbe riconsegnare un messaggio anche dopo che una richiesta di conferma del messaggio è stata restituita correttamente. Questa nuova elaborazione può essere causata da problemi come riavvii lato server o problemi lato client. Pertanto, anche se raramente, qualsiasi messaggio può essere recapitato di nuovo in qualsiasi momento.

Per supportare la consegna più volte, 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à degli abbonati includono connessioni aperte, pull attivi o push riusciti. Se Pub/Sub rileva attività degli abbonati o un aggiornamento delle proprietà dell'abbonamento, il timer di eliminazione dell'abbonamento si riavvia. Utilizzando i criteri di scadenza dell'abbonamento, puoi configurare la durata dell'inattività o rendere l'abbonamento permanente indipendentemente dall'attività. Puoi anche eliminare un abbonamento manualmente.

Sebbene tu possa 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 conteneva molti messaggi non confermati, un nuovo abbonamento creato con lo stesso nome non avrà alcun backlog (nessun messaggio in attesa di invio) al momento della creazione.

Passaggi successivi