Logica di distribuzione delle code FIFO in Amazon SQS - Amazon Simple Queue Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Logica di distribuzione delle code FIFO in Amazon SQS

Le seguenti nozioni possono aiutarti a comprendere meglio l'invio e la ricezione di messaggi da FIFO.

Invio di messaggi

Se più messaggi vengono inviati in successione a una coda FIFO, ognuno con un ID di deduplicazione messaggio distinto, Amazon SQS archivia i messaggi e riconosce la trasmissione. Ogni messaggio può quindi essere ricevuto ed elaborato nell'ordine esatto in cui i messaggi sono stati trasmessi.

Nelle code FIFO, i messaggi vengono ordinati in base all'ID del gruppo messaggi. Se più host (o diversi thread sullo stesso host) inviano messaggi con lo stesso ID gruppo di messaggi a una coda FIFO, Amazon SQS memorizza i messaggi nell'ordine in cui arrivano per l'elaborazione. Per garantire che Amazon SQS conservi l'ordine in cui i messaggi vengono inviati e ricevuti, accertarsi che ogni produttore utilizzi un ID gruppo di messaggi univoco per inviare tutti i suoi messaggi.

La logica della coda FIFO si applica solo all'ID del gruppo di messaggi. Ogni ID del gruppo di messaggi rappresenta un gruppo di messaggi ordinati distinto all'interno di una coda Amazon SQS. Per ciascun ID gruppo messaggi, tutti i messaggi vengono inviati e ricevuti in un ordine esatto. Tuttavia, i messaggi con valori ID gruppo messaggi diversi possono essere inviati e ricevuti fuori ordine. Devi associare un ID gruppo di messaggi a un messaggio. Se non fornisci un ID gruppo di messaggi, l'operazione non riesce. Se hai bisogno di un singolo gruppo di messaggi ordinati, fornisci lo stesso ID gruppo messaggi per i messaggi inviati alla coda FIFO.

Ricezione di messaggi

Non puoi richiedere di ricevere messaggi con un ID gruppo messaggio specifico.

Quando ricevi messaggi da una coda FIFO con più ID gruppo di messaggi, Amazon SQS tenta prima di restituire quanti più messaggi con lo stesso ID gruppo di messaggi possibile. In questo modo altri consumatori possono elaborare messaggi con un altro ID gruppo messaggi. Quando ricevi un messaggio con un ID gruppo di messaggi, non vengono restituiti altri messaggi per lo stesso ID gruppo di messaggi a meno che non elimini il messaggio o non diventi visibile.

Nota

È possibile ricevere fino a 10 messaggi in una singola chiamata utilizzando il parametro di richiesta MaxNumberOfMessages dell'operazione ReceiveMessage. Questi messaggi mantengono il loro ordine FIFO e possono avere lo stesso ID messaggio di gruppo. Pertanto, se sono presenti meno di 10 messaggi disponibili con lo stesso ID messaggio di gruppo, potresti ricevere messaggi da un altro ID messaggio di gruppo, nello stesso batch di 10 messaggi, ma ancora in ordine FIFO.

Tentativi di riesecuzione multipli

Le code FIFO consentono al produttore o al consumatore di fare più tentativi:

  • Se il produttore rileva un'azione SendMessage non riuscita, può ritentare l'invio tutte le volte che è necessario, utilizzando lo stesso ID di deduplicazione del messaggio. Supponendo che il produttore riceva almeno una conferma prima della scadenza dell'intervallo di deduplicazione, più tentativi non influiscono sull'ordine dei messaggi né introducono duplicati.

  • Se il consumatore rileva un'azione ReceiveMessage non riuscita, può riprovare tutte le volte che è necessario, utilizzando lo stesso ID del tentativo di richiesta di ricezione. Supponendo che il consumatore riceva almeno una conferma prima della scadenza del timeout di visibilità, più tentativi non influiscono sull'ordine dei messaggi.

  • Quando ricevi un messaggio con un ID gruppo di messaggi, non vengono restituiti altri messaggi per lo stesso ID gruppo di messaggi a meno che non elimini il messaggio o non diventi visibile.