Skip to content

Aws Sqs

DodaTech 2 min read

title: "Cum să folosești SQS (Simple Queue Service) în AWS — Ghid rapid" description: "Creare cozi SQS, trimitere și consumare mesaje, configurare Dead Letter Queue și vizibilitate în AWS" weight: 1037 date: 2025-01-15 draft: false tags: [aws, sqs, cozi, mesaje, quick-fix]

Amazon SQS (Simple Queue Service) este un serviciu de coadă de mesaje complet gestionat care decuplează componentele aplicațiilor, permițând procesarea asincronă și fiabilă a mesajelor.

Problema

Într-o arhitectură monolitică, componentele aplicației comunică direct, creând cuplări strânse. Dacă o componentă cade, întregul flux e blocat și pierzi mesaje. Scalarea devine dificilă și costisitoare.

Abordarea Greșită

# Comunicare directă HTTP între servicii
response = requests.post("http://procesare/api/comenzi", json=comanda)
# Dacă serviciul cade, comanda e pierdută

Abordarea Corectă

Folosește SQS pentru decuplare:

# Creare coadă
aws sqs create-queue --queue-name comenzi-livezi

# Trimite mesaj
aws sqs send-message \
  --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/comenzi-livezi \
  --message-body '{"comanda_id": "1234", "produs": "Laptop", "cantitate": 1}'

# Primește mesaj
aws sqs receive-message \
  --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/comenzi-livezi \
  --max-number-of-messages 5 \
  --wait-time-seconds 10

# Șterge mesaj (după procesare)
aws sqs delete-message \
  --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/comenzi-livezi \
  --receipt-handle "AQEB..."

Output send-message:

{
    "MessageId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

Dead Letter Queue (DLQ)

# Creare DLQ
aws sqs create-queue --queue-name comenzi-livezi-dlq

# Obține ARN-ul DLQ-ului
aws sqs get-queue-attributes \
  --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/comenzi-livezi-dlq \
  --attribute-names QueueArn

# Configurează coada principală cu redrive policy
aws sqs set-queue-attributes \
  --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/comenzi-livezi \
  --attributes '{
    "RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:123456789012:comenzi-livezi-dlq\",\"maxReceiveCount\":\"5\"}"
  }'

Greșeli Comune

  1. Fără DLQ — mesajele care eșuează de 5 ori rămân în coadă și blochează procesarea.
  2. Visibility timeout prea mic — mesajele revin în coadă înainte de procesare completă.
  3. Polling scurt în loc de long polling — setează WaitTimeSeconds la 10-20s pentru a reduce costurile.
  4. Mesaje fără idempotență — SQS poate livra același mesaj de două ori; asigură procesare idempotentă.
  5. Ignorarea ordinii mesajelor în FIFO — pentru ordine strictă, folosește cozi FIFO nu Standard.

FAQ

### Ce este Amazon SQS?

SQS este un serviciu de coadă de mesaje gestionat care decuplează microserviciile și asigură procesarea fiabilă și asincronă.

Care e diferența dintre SQS Standard și FIFO?

SQS Standard oferă throughput nelimitat dar livrare best-effort. SQS FIFO garantează ordinea exactă și exactly-once processing.

Ce este un Dead Letter Queue?

O DLQ este o coadă separată unde ajung mesajele care au eșuat de un număr maxim de ori, pentru analiză ulterioară.

Construit de dezvoltătorii Doda Browser, DodaZIP și Durga Antivirus Pro. DodaTech integrează securitatea în fiecare soluție cloud.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro