0Pricing
AWS Solutions Architect · Lezione

Code SQS Standard e FIFO

Confronterete le code Standard, ottimizzate per il throughput massimo, con le code FIFO, che garantiscono elaborazione ordinata e exactly-once, e sceglierete il tipo più adatto.

Code SQS Standard e FIFO è una lezione AWS Solutions Architect gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AWS Solutions Architect, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AWS Solutions Architect include 4 lezioni in totale.

Perché le code di messaggi sono importanti

Le code di messaggi disaccoppiano i produttori dai consumatori: un produttore invia un messaggio alla coda senza aspettare che un consumatore lo elabori. Il consumatore elabora i messaggi al proprio ritmo. Questo modello impedisce ai produttori veloci di sovraccaricare quelli lenti, consente di ridimensionare ogni livello in modo indipendente e fornisce un buffer persistente se il consumatore non è temporaneamente disponibile. Amazon SQS è il servizio di accodamento dei messaggi completamente gestito e ad alta disponibilità di AWS.

Caratteristiche delle code standard SQS

Le code standard offrono un throughput illimitato (un numero quasi illimitato di transazioni al secondo). Garantiscono la consegna almeno una volta: in rari casi, a causa dell'infrastruttura distribuita, un messaggio può essere consegnato più di una volta. L'ordine dei messaggi è best effort: in genere i messaggi vengono consegnati nell'ordine di invio, ma ciò non è garantito. Le code standard sono ideali quando il throughput è fondamentale e il consumatore è in grado di gestire duplicati occasionali e consegne fuori ordine.

# Create a Standard queue
aws sqs create-queue \
  --queue-name 'OrderProcessingQueue'

# Send a message
aws sqs send-message \
  --queue-url 'https://sqs.us-east-1.amazonaws.com/123456789012/OrderProcessingQueue' \
  --message-body 'OrderId-12345'

Caratteristiche delle code FIFO SQS

Le code FIFO (First-In, First-Out) garantiscono l'elaborazione esattamente una volta e il rigoroso ordinamento dei messaggi. I messaggi vengono consegnati esattamente nell'ordine in cui sono stati inviati. Le code FIFO supportano fino a 300 transazioni al secondo (3.000 con il batching). I nomi delle code FIFO devono terminare con .fifo. Utilizzi le code FIFO quando l'ordine e la semantica di elaborazione esattamente una volta sono fondamentali, ad esempio per transazioni finanziarie, elaborazione degli ordini e-commerce e aggiornamenti dell'inventario.

# Create a FIFO queue
aws sqs create-queue \
  --queue-name 'OrderProcessingQueue.fifo' \
  --attributes '{
    "FifoQueue": "true",
    "ContentBasedDeduplication": "true"
  }'

Gruppi di messaggi nelle code FIFO

Le code FIFO utilizzano gli ID dei gruppi di messaggi per suddividere l'ordinamento all'interno della coda. I messaggi con lo stesso Group ID vengono consegnati in ordine, mentre quelli con Group ID diversi possono essere elaborati in parallelo. Ad esempio, utilizzi customerId come Group ID: gli ordini di ogni cliente vengono elaborati in sequenza, mentre gli ordini di clienti diversi vengono elaborati contemporaneamente. In questo modo è possibile ottenere la semantica FIFO con scalabilità orizzontale tra i consumatori.

aws sqs send-message \
  --queue-url 'https://sqs.us-east-1.amazonaws.com/123456789012/Orders.fifo' \
  --message-body 'Order details here' \
  --message-group-id 'customer-789' \
  --message-deduplication-id 'order-uuid-abc123'

Deduplicazione nelle code FIFO

Le code FIFO impediscono l'elaborazione duplicata dei messaggi utilizzando un ID di deduplicazione. Se due messaggi vengono inviati con lo stesso ID entro un intervallo di deduplicazione di 5 minuti, il secondo viene eliminato senza notifiche. È possibile fornire esplicitamente un ID di deduplicazione (MessageDeduplicationId) oppure abilitare la deduplicazione basata sul contenuto, in cui SQS calcola automaticamente un hash SHA-256 del corpo del messaggio e lo usa come ID di deduplicazione. La deduplicazione basata sul contenuto è più semplice, ma richiede corpi dei messaggi univoci.

Conservazione e limiti delle dimensioni dei messaggi

SQS conserva i messaggi per un periodo configurabile: minimo 1 minuto, massimo 14 giorni (4 giorni per impostazione predefinita). I messaggi non consumati entro il periodo di conservazione vengono eliminati automaticamente. La dimensione massima di un messaggio è di 256 KB. Per payload più grandi, utilizzi la SQS Extended Client Library oppure memorizzi il payload in S3 e invii nel messaggio SQS solo il riferimento all'oggetto S3. Questi limiti valgono sia per le code standard sia per quelle FIFO.

Ricezione ed eliminazione dei messaggi

I consumatori eseguono il polling della coda utilizzando receive-message. Dopo la ricezione, il messaggio diventa invisibile (nascosto agli altri consumatori) per il periodo del visibility timeout. Il consumatore deve elaborare il messaggio e quindi eliminarlo esplicitamente utilizzando il receipt handle prima della scadenza del timeout. Se il consumatore si arresta in modo anomalo o non elimina il messaggio in tempo, questo ricompare e un altro consumatore può elaborarlo, consentendo la consegna almeno una volta nelle code standard.

RECEIPT=$(aws sqs receive-message \
  --queue-url 'https://...' \
  --query 'Messages[0].ReceiptHandle' --output text)

# Process message, then delete it
aws sqs delete-message \
  --queue-url 'https://...' \
  --receipt-handle "$RECEIPT"

Confronto del throughput nella pratica

Le code standard sono adatte a: generazione di miniature per immagini, invio di e-mail di notifica ed elaborazione dei log, ovvero carichi di lavoro in cui i duplicati possono essere gestiti in modo idempotente e l'ordine non è importante. Le code FIFO sono necessarie per: elaborazione di bonifici bancari (addebito prima dell'accredito), aggiornamenti dei carrelli e-commerce (aggiunta dell'articolo prima del checkout) e passaggi di workflow in cui il passaggio 2 deve seguire il passaggio 1. Nella maggior parte delle architetture ad alto throughput, le code standard sono la scelta predefinita; passi alle FIFO solo quando l'ordinamento o la consegna esattamente una volta sono requisiti imprescindibili.

Batching per throughput e costi

SQS applica i costi per ogni richiesta API. Utilizzi le operazioni batch per inviare, ricevere ed eliminare fino a 10 messaggi per chiamata API, riducendo i costi fino a 10 volte. Le code FIFO supportano la modalità high-throughput (che abilita il batching), portando il limite a 3.000 messaggi al secondo con batch di 10 messaggi. In produzione utilizzi sempre send-message-batch e delete-message-batch per ridurre al minimo i costi delle chiamate API.

aws sqs send-message-batch \
  --queue-url 'https://...' \
  --entries '[
    {"Id": "msg1", "MessageBody": "Order-001"},
    {"Id": "msg2", "MessageBody": "Order-002"},
    {"Id": "msg3", "MessageBody": "Order-003"}
  ]'

Policy di accesso alle code

Le code SQS sono protette da policy basate sulle risorse (policy della coda) che controllano chi può inviare messaggi alla coda o riceverli. Questo è fondamentale quando si consente l'accesso tra account o quando SNS pubblica su una coda SQS. L'accesso di Lambda a SQS è controllato dalla policy IAM del ruolo di esecuzione di Lambda (sqs:ReceiveMessage, sqs:DeleteMessage, sqs:GetQueueAttributes). Applichi sempre il principio del privilegio minimo: non assegni a un consumatore più autorizzazioni di quelle necessarie per ricevere ed eliminare i messaggi.

Scelta tra Standard e FIFO: guida decisionale

Per scegliere, si ponga queste domande: (1) L'ordine è importante? Se sì → FIFO. (2) È necessaria un'elaborazione esattamente una volta? Se sì → FIFO. (3) È necessario un throughput superiore a 3.000 TPS? Se sì → Standard (le FIFO sono limitate a 3.000 TPS con il batching). (4) I consumatori sono in grado di gestire i duplicati? Se sì → Standard è più semplice ed economica. Per l'esame SAA-C03, le parole chiave delle FIFO sono: 'ordering', 'exactly-once', 'sequential', 'deduplication'. Le parole chiave delle code standard sono: 'high throughput', 'best effort', 'at-least-once'.

Verifica rapida

Verifichi la propria comprensione dei concetti AWS Solutions Architect (SAA-C03) trattati in questa lezione.

Riepilogo della lezione

In questa lezione ha imparato che le code standard offrono throughput illimitato, consegna almeno una volta e ordinamento best effort, risultando adatte a carichi di lavoro ad alto volume che possono tollerare i duplicati; le code FIFO garantiscono l'elaborazione esattamente una volta e il rigoroso ordinamento dei messaggi utilizzando gli ID dei gruppi di messaggi e gli ID di deduplicazione, con un limite di 3.000 TPS con il batching; la scelta tra le due dipende dal fatto che l'ordinamento e la deduplicazione siano o meno requisiti imprescindibili. Prossimamente esamineremo il visibility timeout, le code DLQ e il long polling.

Domande Frequenti

La lezione «Code SQS Standard e FIFO» è gratuita?

Sì — il testo completo di «Code SQS Standard e FIFO» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AWS Solutions Architect, passa a CoddyKit PRO. Il corso AWS Solutions Architect include 4 lezioni in totale.

Cosa imparerò in «Code SQS Standard e FIFO»?

Confronterete le code Standard, ottimizzate per il throughput massimo, con le code FIFO, che garantiscono elaborazione ordinata e exactly-once, e sceglierete il tipo più adatto. Eserciti AWS Solutions Architect con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare AWS Solutions Architect?

Non è richiesta alcuna esperienza precedente. AWS Solutions Architect su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Code SQS Standard e FIFO»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione AWS Solutions Architect?

Sì. Ogni lezione AWS Solutions Architect include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Code SQS Standard e FIFO
  2. Visibility timeout, DLQ e long polling
  3. Topic SNS e architettura fan-out
  4. Filtraggio dei messaggi SQS e integrazione SNS + SQS
← Torna a AWS Solutions Architect