In questa pagina viene spiegato come ricevere i messaggi in ordine.
Per ulteriori informazioni sulla ricezione dei messaggi, consulta la panoramica degli iscritti.
Ricezione dei messaggi in ordine
Se i messaggi hanno la stessa chiave di ordinamento e si trovano nella stessa area geografica, puoi abilitare l'ordinamento dei messaggi e ricevere i messaggi nell'ordine in cui li riceve il servizio Pub/Sub.
Pub/Sub recapita ciascun messaggio almeno una volta, quindi il servizio Pub/Sub potrebbe recapitare di nuovo i messaggi. Quando ricevi messaggi in ordine e il servizio Pub/Sub riconsegna un messaggio con una chiave di ordinamento, Pub/Sub mantiene l'ordine anche ripubblicando i messaggi successivi con la stessa chiave di ordinamento. Il servizio Pub/Sub reindirizza questi messaggi nell'ordine in cui li ha ricevuti in origine.
Quando il servizio Pub/Sub reindirizza un messaggio con una chiave di ordinamento, il servizio Pub/Sub reindirizza anche tutti i messaggi successivi con la stessa chiave di ordinamento, inclusi i messaggi confermati. Se sia l'ordinamento dei messaggi sia un argomento messaggi non recapitabili siano abilitati per una sottoscrizione, ciò potrebbe non essere vero, poiché Pub/Sub inoltra i messaggi agli argomenti non recapitabili in base al meglio. Una volta ricevuti i messaggi ricaricati, devi confermarli di nuovo. Non è garantito che i messaggi successivi vengano inviati senza che quelli precedenti vengano confermati.
Chiavi ordinate e consegna messaggi
I messaggi con la stessa chiave di ordinamento sono garantiti per la consegna nell'ordine.
Non è garantito che i messaggi con chiavi di ordinamento diversi vengano recapitati indipendentemente dall'ora di pubblicazione.
L'impossibilità di riconoscere un messaggio potrebbe rallentare la consegna dei messaggi per altre chiavi di ordinamento. Questo problema può verificarsi quando i server si riavviano in modo imprevisto o vengono apportate modifiche all'insieme di server utilizzati a causa di modifiche al traffico. Per mantenere l'ordine in tali eventi, tutti i messaggi pubblicati nel vecchio server devono essere confermati prima della consegna dei messaggi provenienti dal nuovo server, anche se riguardano chiavi di ordinamento diverse. Se non puoi garantire il riconoscimento tempestivo di tutti i messaggi, valuta la possibilità di allegare un argomento messaggi non recapitabili alla sottoscrizione. L'ordine dei messaggi potrebbe non essere mantenuto quando vengono scritti nell'argomento messaggi non recapitabili.
Attivazione dell'ordinamento dei messaggi
Per ricevere i messaggi in ordine, imposta la proprietà di ordinamento dei messaggi nella sottoscrizione da cui ricevi i messaggi. La ricezione dei messaggi in ordine potrebbe aumentare la latenza.
Puoi impostare la proprietà dell'ordinamento dei messaggi quando crei una sottoscrizione utilizzando la console Google Cloud, Google Cloud CLI o l'API Pub/Sub.
Console
Per creare una sottoscrizione con la proprietà dell'ordinamento dei messaggi, procedi nel seguente modo:
Nella console Google Cloud, vai alla pagina Abbonamenti.
Fai clic su Crea sottoscrizione.
Inserisci un ID abbonamento.
Scegli un argomento da cui ricevere messaggi.
Nella sezione Ordine dei messaggi, seleziona Ordina i messaggi con una chiave di ordinamento.
Fai clic su Crea.
gcloud
Per creare una sottoscrizione con la proprietà di ordinamento dei messaggi, utilizza il comando gcloud pubsub subscriptions create
e il flag --enable-message-ordering
:
gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --enable-message-ordering
Sostituisci SUBSCRIPTION_ID con l'ID dell'abbonamento.
Se la richiesta ha esito positivo, la riga di comando mostra un messaggio di conferma:
Created subscription [SUBSCRIPTION_ID].
REST
Per creare una sottoscrizione con la proprietà di ordinamento dei messaggi, invia una richiesta PUT
come la seguente:
PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID Authorization: Bearer $(gcloud auth application-default print-access-token)
Sostituisci quanto segue:
- PROJECT_ID: l'ID del progetto con l'argomento
- SUBSCRIPTION_ID: ID dell'abbonamento
Nel corpo della richiesta, specifica quanto segue:
{ "topic": TOPIC_ID, "enableMessageOrdering": true, }
Sostituisci TOPIC_ID con l'ID dell'argomento da collegare alla sottoscrizione.
Se la richiesta ha esito positivo, la risposta è l'abbonamento in formato JSON:
{ "name": projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID, "topic": projects/PROJECT_ID/topics/TOPIC_ID, "enableMessageOrdering": true, }
C++
Prima di provare questo esempio, segui le istruzioni di configurazione di C++ in Guida rapida: utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub C++.
C#
Prima di provare questo esempio, segui le istruzioni di configurazione di C# in Guida rapida all'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Pub/Sub C#.
Go
Prima di provare questo esempio, segui le istruzioni per la configurazione di Go in Guida rapida: utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Pub/Sub Go.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java in Guida rapida: utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Java di Pub/Sub.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js in Guida rapida: utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Pub/Sub Node.js.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python in Guida rapida: utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Python Pub/Sub.
Ruby
Prima di provare questo esempio, segui le istruzioni di configurazione di Ruby in Guida rapida: utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento per l'API Pub/Sub Ruby.
Dopo aver impostato la proprietà dell'ordinamento dei messaggi, il servizio Pub/Sub fornisce i messaggi con la stessa chiave di ordinamento nell'ordine in cui il servizio Pub/Sub riceve i messaggi. Ad esempio, se un editore invia due messaggi con la stessa chiave di ordinamento, il servizio Pub/Sub recapita prima il messaggio meno recente.
Passaggi successivi
Leggi il post del blog sulla consegna ordinata.
Monitora il tuo abbonamento.
Leggi informazioni sulla pubblicazione dei messaggi con le chiavi di ordinamento.