Questo documento presuppone che tu abbia già dimestichezza con la procedura di abbonamento a un argomento Pub/Sub e di ricezione dei messaggi nel client sottoscrittore.
Se non hai mai utilizzato Pub/Sub, consulta una delle guide rapide e scopri come eseguire Pub/Sub utilizzando la console, l'interfaccia a riga di comando gcloud o le librerie client.
Scegli l'abbonamento giusto
Pub/Sub offre sottoscrizioni standard come le sottoscrizioni push e pull. Oltre agli abbonamenti standard, Pub/Sub offre anche abbonamenti per l'esportazione che ti consentono di archiviare i messaggi direttamente in una risorsa Google Cloud, senza richiedere Dataflow come intermediario. Ad esempio, le sottoscrizioni BigQuery archiviano i messaggi in una tabella BigQuery.
Gli abbonamenti push sono consigliati per i seguenti scenari:
Non puoi includere nella tua applicazione per gli abbonati codice che importa la libreria client come dipendenza.
Il client sottoscrittore non può inviare richieste in uscita.
Vuoi utilizzare la stessa istanza per elaborare i messaggi di argomenti e iscrizioni diversi in cui il client sottoscrittore non conosce l'elenco delle iscrizioni.
Per i casi generali, ti consigliamo di utilizzare la
libreria client di alto livello. Se invece utilizzi il pull unario, non imposta returnImmediately
su true
. Impostarlo su true
influisce negativamente sul rendimento del pull.
Il campo returnImmediately
è stato ritirato.
Per confrontare tutti i tipi di abbonamento e scegliere quello più adatto alle tue esigenze aziendali, consulta la tabella di confronto degli abbonamenti Pub/Sub.
Per scoprire i vantaggi di un abbonamento per l'esportazione, consulta Quando utilizzare un abbonamento per l'esportazione.
Elaborare i messaggi prima di confermarli
Per impostazione predefinita, Pub/Sub elimina un messaggio da una sottoscrizione dopo che il messaggio è stato confermato. Se non elabori un messaggio prima di inviare un conferma e l'elaborazione non va a buon fine, il servizio non recapita nuovamente il messaggio. L'eccezione è rappresentata dal caso in cui hai configurato la conservazione dei messaggi confermati o la conservazione degli argomenti ed esegui un'operazione di ricerca.
Se hai abbonati con latenza elevata, potresti dover impostare valori personalizzati per il controllo del flusso e la gestione del leasing.
Configura il controllo del flusso degli abbonati per picchi di traffico transitori
Il controllo del flusso sul lato degli abbonati ti consente di evitare che gli abbonati vengano sovraccaricati da picchi di traffico. Può consentire ai meccanismi di scalabilità automatica di rispondere a un aumento del carico o di distribuire l'elaborazione del carico su un periodo di tempo più lungo. Il primo metodo riduce la latenza, mentre il secondo consente di risparmiare sui costi.
Per configurare il controllo del flusso, devi impostare valori appropriati per maximum outstanding messages
e total outstanding message bytes
. I valori predefiniti per queste variabili di controllo del flusso e i nomi delle variabili potrebbero variare in base alle librerie client.
Numero massimo di messaggi in attesa definisce il numero massimo di messaggi consegnati al client per i quali Pub/Sub non ha ricevuto conferma o conferma negativa.
Totale byte di messaggi in sospeso definisce le dimensioni massime totali dei messaggi inviati al client per i quali Pub/Sub non ha ricevuto conferme o conferme negative.
Se il limite per una di queste opzioni viene superato, il client sottoscrittore non recupera più messaggi. Questo comportamento continua finché i messaggi già recuperati non vengono confermati o non confermati. In questo modo, puoi compensare il throughput con il costo associato alla gestione di un maggior numero di iscritti.
Best practice per la messaggistica ordinata nell'abbonamento
Se utilizzi l'ordinamento dei messaggi, assicurati di quanto segue:
Scegli gli abbonamenti StreamingPull o Pull. Per una sottoscrizione push, Pub/Sub supporta un solo messaggio in sospeso per ogni chiave di ordinamento alla volta. Inviare richieste push parallele in questo scenario sarebbe simile all'invio di più batch di messaggi per la stessa chiave di ordinamento per eseguire il pull degli iscritti contemporaneamente. Pertanto, gli abbonamenti push non sono consigliati per gli argomenti in cui vengono pubblicati frequentemente più messaggi con la stessa chiave di ordinamento o in cui la latenza è estremamente importante.
Attiva l'ordinamento dei messaggi nell'abbonamento. Sul lato del publisher, se invii messaggi con una chiave di ordinamento e nella stessa regione, puoi configurare gli iscritti in modo che li ricevano in ordine. Sul lato dell'abbonato, attiva la proprietà di ordinamento dei messaggi solo per le iscrizioni per le quali vuoi ricevere messaggi ordinati. A seconda dello stato della proprietà, ogni sottoscrizione associata all'argomento può determinare se ha bisogno di un invio ordinato senza influire sulle altre.
Acconsenti ai messaggi in ordine. Quando utilizzi la consegna ordinata, le conferme per i messaggi successivi non vengono elaborate finché non vengono elaborate le conferme per i messaggi precedenti in base alla chiave di ordinamento. Ad esempio, se hai i messaggi 1, 2 e 3 con la stessa chiave di ordinamento, li ricevi tutti e confermi solo il messaggio 3, il servizio non considera confermato il messaggio 3 finché non vengono confermati anche i messaggi 1 e 2. Se i messaggi di conferma per i messaggi 1 e 2 non vengono mai ricevuti, i messaggi 1, 2 e 3 vengono tutti recapitati di nuovo.
Riepilogo delle best practice
La tabella seguente riassume le best practice consigliate in questo documento:
Argomento | Attività |
---|---|
Scegliere un tipo di abbonamento | Scegli il tipo di abbonamento più adatto alle esigenze della tua attività. Se supportato dal tuo abbonamento, utilizza anche la libreria client di alto livello. |
Riprodurre di nuovo un messaggio confermato | Elabora un messaggio prima di confermarlo. In alternativa, configura un'operazione di ricerca per non perdere i messaggi confermati. |
Controllo del flusso | Configura il controllo del flusso nelle impostazioni degli abbonati per assicurarti che gli abbonati non vengano sovraccaricati finché non viene attivata l'autoscalabilità o non passa del tempo. |
Ordinare i messaggi | Quando utilizzi i messaggi in ordine, scegli StreamingPull o Pull, attiva l'ordinamento dei messaggi nell'abbonamento e conferma i messaggi in ordine. |