Questo documento fornisce una panoramica di una sottoscrizione push, del relativo flusso di lavoro e proprietà associate.
Nella consegna push, Pub/Sub avvia richieste al tuo sottoscrittore per la consegna dei messaggi. I messaggi vengono recapitati a un indirizzo pubblico un server web o un webhook, ad esempio una richiesta POST HTTPS.
Le sottoscrizioni push riducono al minimo le dipendenze dalle librerie client specifiche di Pub/Sub e meccanismi di autenticazione. Funzionano bene anche con serverless e con scalabilità automatica tecnologie di servizio, come le funzioni di Cloud Run, Cloud Run e Google Kubernetes Engine.
Prima di iniziare
Prima di leggere questo documento, assicurati di acquisire familiarità con quanto segue:
Come funziona Pub/Sub e il diversi termini di Pub/Sub.
I diversi tipi di abbonamenti supportato da Pub/Sub e perché conviene utilizzare una richiesta abbonamento.
Flusso di lavoro della sottoscrizione push
In una sottoscrizione push, un server Pub/Sub avvia una richiesta il client sottoscrittore per la consegna dei messaggi.
L'immagine seguente mostra il flusso di lavoro tra un client sottoscrittore e un push abbonamento.
.Di seguito è riportata una breve descrizione del flusso di lavoro che fa riferimento alla Figura 3:
- Il server Pub/Sub invia ogni messaggio come richiesta HTTPS a
il client sottoscrittore in un endpoint preconfigurato. Questa richiesta viene visualizzata come
PushRequest
nell'immagine. - L'endpoint conferma il messaggio restituendo uno stato HTTP di operazione riuscita
le API nel tuo codice. Una risposta non riuscita indica che Pub/Sub deve
inviare di nuovo i messaggi. Questa risposta viene visualizzata come
PushResponse
nel dell'immagine. - Pub/Sub regola dinamicamente la frequenza delle richieste di push in base sulla frequenza con cui riceve risposte positive.
Proprietà di una sottoscrizione push
Le proprietà che configuri per una sottoscrizione push determinano il modo in cui di scrivere messaggi nella sottoscrizione. Per ulteriori informazioni, vedi proprietà abbonamento.
Modalità di ricezione dei messaggi degli endpoint push
Quando Pub/Sub consegna un messaggio a un endpoint push, puoi scegliere di inviarlo o di inviarlo senza incarto. Per impostazione predefinita, i messaggi vengono inviati con wrapping.
- Avvolto. Pub/Sub invia il messaggio nel corpo JSON di un
Richiesta di
POST
. - Senza contorno. Pub/Sub invia i dati non elaborati dei messaggi direttamente il corpo HTTP.
I seguenti esempi mostrano il corpo aggregato di una richiesta POST
JSON a un push
endpoint che contiene la stringa Hello there
nel campo message.data
Il corpo di una richiesta POST è un oggetto JSON. I dati dei messaggi si trovano
message.data
con codifica Base64.
Esempio di una richiesta con i valori minimi
{ "message": { "data": "SGVsbG8gQ2xvdWQgUHViL1N1YiEgSGVyZSBpcyBteSBtZXNzYWdlIQ==", "messageId": "2070443601311540", "message_id": "2070443601311540", "publishTime": "2021-02-26T19:13:55.749Z", "publish_time": "2021-02-26T19:13:55.749Z" }, "subscription": "projects/myproject/subscriptions/mysubscription" }
Esempio di una richiesta con i valori massimi
Tieni presente che questo esempio mostra i valori massimi attuali, che potrebbero cambiare nel tempo. Inoltre, la mappa degli attributi può contenere una serie di valori.
{ "deliveryAttempt": 5, "message": { "attributes": { "key": "value" }, "data": "SGVsbG8gQ2xvdWQgUHViL1N1YiEgSGVyZSBpcyBteSBtZXNzYWdlIQ==", "messageId": "2070443601311540", "message_id": "2070443601311540", "orderingKey": "key", "publishTime": "2021-02-26T19:13:55.749Z", "publish_time": "2021-02-26T19:13:55.749Z" }, "subscription": "projects/myproject/subscriptions/mysubscription" }
Per ricevere messaggi dalle sottoscrizioni push, utilizza un webhook ed elabora
POST
richiede che Pub/Sub invii all'endpoint push. Per maggiori informazioni
informazioni sull'elaborazione di queste richieste POST
in App Engine, vedi
Scrivere e rispondere a messaggi Pub/Sub.
Dopo aver ricevuto una richiesta push, restituisci un codice di stato HTTP. Per confermare il messaggio, restituisci uno dei seguenti codici di stato:
102
200
201
202
204
Per inviare una conferma negativa per il messaggio, restituisce qualsiasi altro stato le API nel tuo codice. Se invii una conferma negativa o il scadenza di conferma scade, Pub/Sub invia nuovamente il messaggio. Non puoi modificare scadenza di conferma dei singoli messaggi che ricevi dal push abbonamenti.
Autenticazione per le sottoscrizioni push
Se un abbonamento push utilizza l'autenticazione, il servizio Pub/Sub firma un JWT e lo invia nell'intestazione di autorizzazione della richiesta push.
Per saperne di più sulla configurazione dell'autenticazione, consulta Autenticare le richieste push.
Interrompere e riprendere la consegna dei messaggi
Per interrompere temporaneamente l'invio di richieste al push a Pub/Sub modifica la sottoscrizione in pull. L'applicazione della modifica può richiedere diversi minuti.
Per riprendere la consegna push, imposta di nuovo l'URL su un endpoint valido. Per permanente interrompere la pubblicazione, eliminare l'abbonamento.
Push backoff
Se un sottoscrittore push invia troppi conferme negativi, Pub/Sub potrebbe iniziare a recapitare i messaggi utilizzando un backoff push. Quando Pub/Sub utilizza un backoff respingimento, interrompe la consegna dei messaggi per una quantità predeterminata nel tempo. Questo intervallo di tempo può variare da 100 millisecondi a 60 secondi. Una volta trascorso il tempo, Pub/Sub riprende a consegnare i messaggi.
Il backoff di push utilizza un backoff esponenziale per determinare il ritardo utilizzato da Pub/Sub tra l'invio messaggi. Questo periodo di tempo viene calcolato in base al numero di risposte negative ringraziamenti che spingono gli iscritti a inviare.
Ad esempio, se un sottoscrittore push riceve cinque messaggi al secondo e invia una conferma negativa al secondo, Pub/Sub restituisce ogni 500 millisecondi circa. Oppure, se il push l'abbonato invia cinque conferme negative al secondo Pub/Sub consegna i messaggi ogni 30-60 secondi.
Tieni presente le seguenti considerazioni sul backoff del push:
- Il push backoff non può essere attivato o disattivato. Inoltre, non puoi modificare i valori utilizzati per calcolare il ritardo.
- Il backoff di push viene attivato nelle seguenti azioni:
- Quando viene ricevuta una conferma negativa.
- Quando scade la scadenza di conferma di un messaggio.
- Il push backoff si applica a tutti i messaggi in una sottoscrizione (globale).
Percentuale di pubblicazione
Pub/Sub regola il numero di richieste push simultanee utilizzando un slow-start algoritmo. Il numero massimo consentito di richieste push simultanee è il finestra di push. La finestra push aumenta per ogni distribuzione riuscita diminuisce in caso di errori. Il sistema inizia con una piccola finestra di una sola cifra dimensioni.
Quando un sottoscrittore conferma i messaggi, la finestra aumenta in modo esponenziale. Per sottoscrizioni in cui i sottoscrittori confermano di oltre il 99% dei messaggi meno di un secondo di latenza delle richieste push, la finestra di push dovrebbe abbastanza per stare al passo con la velocità effettiva di pubblicazione.
La latenza delle richieste push include quanto segue:
La latenza di rete andata e ritorno tra i server Pub/Sub e l'endpoint push
Il tempo di elaborazione dell'abbonato
Dopo 3000 messaggi in sospeso per regione, la finestra aumenta linearmente a impedire che l'endpoint push riceva troppi messaggi. Se la media latenza supera un secondo o il sottoscrittore conferma meno del 99% di richieste, la finestra diminuisce fino al limite inferiore di 3000 messaggi in sospeso.
Per ulteriori informazioni sulle metriche che puoi utilizzare per monitorare la consegna push, consulta Monitoraggio delle sottoscrizioni push.
Quote e limiti
Le sottoscrizioni push sono soggette a un insieme quote e limiti delle risorse.
Passaggi successivi
Crea una sottoscrizione push per l'argomento.
Crea o modifica una sottoscrizione con gcloud CLI.
Crea o modifica un abbonamento con le API REST.
Crea o modifica una sottoscrizione con le API RPC.