Kolejki SQS Standard a FIFO
Porównają kolejki Standard zapewniające maksymalną przepustowość z kolejkami FIFO gwarantującymi uporządkowane przetwarzanie dokładnie raz oraz wybiorą właściwy typ.
Kolejki SQS Standard a FIFO to bezpłatna lekcja Cloud & IT Cert Prep na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cloud & IT Cert Prep, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cloud & IT Cert Prep zawiera 4 lekcji w sumie.
Dlaczego kolejki komunikatów mają znaczenie
Kolejki komunikatów oddzielają producentów od konsumentów: producent wysyła komunikat do kolejki, nie czekając, aż konsument go przetworzy. Konsument przetwarza komunikaty we własnym tempie. Ten wzorzec zapobiega przeciążeniu wolnych konsumentów przez szybkich producentów, umożliwia niezależne skalowanie poszczególnych warstw i zapewnia trwały bufor na wypadek tymczasowej niedostępności konsumenta. Amazon SQS to w pełni zarządzana, wysoce dostępna usługa kolejkowania komunikatów AWS.
Charakterystyka standardowej kolejki SQS
Kolejki standardowe oferują nieograniczoną przepustowość (niemal nieograniczoną liczbę transakcji na sekundę). Gwarantują dostarczenie co najmniej raz — w rzadkich przypadkach komunikat może zostać dostarczony więcej niż raz (ze względu na rozproszoną infrastrukturę). Kolejność komunikatów jest zapewniana w ramach best effort: komunikaty są zazwyczaj dostarczane w kolejności wysłania, ale nie jest to gwarantowane. Kolejki standardowe są idealne, gdy kluczowa jest przepustowość, a konsument może obsługiwać sporadyczne duplikaty i dostarczanie komunikatów poza kolejnością.
# 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'Charakterystyka kolejki FIFO SQS
Kolejki FIFO (First-In, First-Out) gwarantują przetwarzanie dokładnie raz oraz ścisłe zachowanie kolejności komunikatów. Komunikaty są dostarczane dokładnie w kolejności, w której zostały wysłane. Kolejki FIFO obsługują do 300 transakcji na sekundę (3000 w przypadku grupowania). Nazwy kolejek FIFO muszą kończyć się ciągiem .fifo. Kolejek FIFO należy używać, gdy kolejność i semantyka przetwarzania dokładnie raz mają kluczowe znaczenie — na przykład w przypadku transakcji finansowych, przetwarzania zamówień w handlu elektronicznym czy aktualizacji stanów magazynowych.
# Create a FIFO queue
aws sqs create-queue \
--queue-name 'OrderProcessingQueue.fifo' \
--attributes '{
"FifoQueue": "true",
"ContentBasedDeduplication": "true"
}'Grupy komunikatów w kolejkach FIFO
Kolejki FIFO używają identyfikatorów grup komunikatów do podziału kolejki na sekcje z zachowaniem kolejności. Komunikaty z tym samym identyfikatorem grupy są dostarczane w kolejności, natomiast komunikaty z różnymi identyfikatorami grup mogą być przetwarzane równolegle. Na przykład jako identyfikatora grupy można użyć customerId: zamówienia każdego klienta są przetwarzane sekwencyjnie, ale zamówienia różnych klientów — współbieżnie. Umożliwia to zachowanie semantyki FIFO przy poziomym skalowaniu między konsumentami.
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'Usuwanie duplikatów w kolejkach FIFO
Kolejki FIFO zapobiegają wielokrotnemu przetwarzaniu komunikatów za pomocą identyfikatora usuwania duplikatów. Jeśli w ciągu 5-minutowego okresu deduplikacji zostaną wysłane dwa komunikaty z tym samym identyfikatorem, drugi zostanie po cichu odrzucony. Identyfikator usuwania duplikatów można podać jawnie (MessageDeduplicationId) albo włączyć deduplikację na podstawie treści, w ramach której SQS automatycznie oblicza skrót SHA-256 treści komunikatu i używa go jako identyfikatora usuwania duplikatów. Deduplikacja na podstawie treści jest prostsza, ale wymaga unikatowych treści komunikatów.
Okres przechowywania i limity rozmiaru komunikatów
SQS przechowuje komunikaty przez konfigurowalny okres: minimalnie 1 minutę, maksymalnie 14 dni (domyślnie 4 dni). Komunikaty, które nie zostaną odebrane w okresie przechowywania, są automatycznie usuwane. Maksymalny rozmiar komunikatu wynosi 256 KB. W przypadku większych ładunków należy użyć SQS Extended Client Library albo przechować ładunek w S3 i wysłać w komunikacie SQS tylko odwołanie do obiektu S3. Limity te dotyczą zarówno kolejek standardowych, jak i FIFO.
Odbieranie i usuwanie komunikatów
Konsumenci odpytują kolejkę za pomocą receive-message. Po odebraniu komunikat staje się niewidoczny (ukryty przed innymi konsumentami) na czas trwania limitu czasu widoczności. Konsument musi przetworzyć komunikat, a następnie jawnie go usunąć za pomocą uchwytu potwierdzenia przed upływem tego limitu. Jeśli konsument ulegnie awarii albo nie usunie komunikatu na czas, komunikat pojawi się ponownie i będzie mógł zostać przetworzony przez innego konsumenta — umożliwia to dostarczanie co najmniej raz w kolejkach standardowych.
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"Porównanie przepustowości w praktyce
Kolejki standardowe nadają się do: generowania miniatur obrazów, wysyłania wiadomości e-mail z powiadomieniami oraz przetwarzania logów — czyli obciążeń, w których duplikaty można obsłużyć idempotentnie, a kolejność nie ma znaczenia. Kolejki FIFO są wymagane w przypadku: przetwarzania przelewów bankowych (obciążenie przed uznaniem), aktualizacji koszyka w handlu elektronicznym (dodanie produktu przed realizacją zamówienia) oraz etapów przepływu pracy, w których etap 2 musi nastąpić po etapie 1. W większości architektur o dużej przepustowości domyślnym wyborem są kolejki standardowe; na FIFO należy przechodzić tylko wtedy, gdy kolejność lub dostarczenie dokładnie raz jest bezwzględnym wymaganiem.
Grupowanie w celu zwiększenia przepustowości i obniżenia kosztów
SQS nalicza opłaty za każde żądanie API. Należy używać operacji grupowych do wysyłania, odbierania i usuwania maksymalnie 10 komunikatów w jednym wywołaniu API, co pozwala zmniejszyć koszty nawet 10-krotnie. Kolejki FIFO obsługują tryb wysokiej przepustowości (włączający grupowanie), który podnosi limit do 3000 komunikatów na sekundę przy grupowaniu po 10 komunikatów. W środowisku produkcyjnym należy zawsze używać send-message-batch i delete-message-batch, aby minimalizować koszty wywołań 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"}
]'Zasady dostępu do kolejki
Kolejki SQS są zabezpieczane za pomocą zasad opartych na zasobach (zasad kolejek), które określają, kto może wysyłać komunikaty do kolejki i kto może je z niej odbierać. Ma to kluczowe znaczenie w przypadku dostępu między kontami oraz publikowania przez SNS do kolejki SQS. Dostęp Lambda do SQS jest kontrolowany przez zasady IAM roli wykonawczej Lambda (sqs:ReceiveMessage, sqs:DeleteMessage, sqs:GetQueueAttributes). Należy zawsze stosować zasadę najmniejszych uprawnień: konsumentowi nie należy przyznawać uprawnień wykraczających poza odbieranie i usuwanie komunikatów.
Wybór między Standard i FIFO: przewodnik decyzyjny
Aby dokonać wyboru, należy odpowiedzieć na następujące pytania: (1) Czy kolejność ma znaczenie? Jeśli tak → FIFO. (2) Czy wymagane jest przetwarzanie dokładnie raz? Jeśli tak → FIFO. (3) Czy potrzebna jest przepustowość większa niż 3000 TPS? Jeśli tak → Standard (FIFO ma limit 3000 TPS przy grupowaniu). (4) Czy konsumenci mogą obsługiwać duplikaty? Jeśli tak → Standard jest prostsze i tańsze. Na egzaminie SAA-C03 słowa kluczowe dla FIFO to: „ordering”, „exactly-once”, „sequential”, „deduplication”. Słowa kluczowe dla Standard to: „high throughput”, „best effort”, „at-least-once”.
Szybkie sprawdzenie
Sprawdź swoją znajomość zagadnień AWS Solutions Architect (SAA-C03) omówionych w tej lekcji.
Podsumowanie lekcji
W tej lekcji poznali Państwo: kolejki standardowe oferują nieograniczoną przepustowość, dostarczanie co najmniej raz i kolejność zapewnianą w ramach best effort, dzięki czemu nadają się do obciążeń o dużym wolumenie, które tolerują duplikaty; kolejki FIFO gwarantują przetwarzanie dokładnie raz i ścisłe zachowanie kolejności komunikatów za pomocą identyfikatorów grup komunikatów oraz identyfikatorów usuwania duplikatów, a ich limit wynosi 3000 TPS przy grupowaniu; wybór między nimi zależy od tego, czy zachowanie kolejności i deduplikacja są bezwzględnymi wymaganiami. W następnej części omówimy limit czasu widoczności, kolejki obsługi komunikatów zatrutych oraz długie odpytywanie.
Często zadawane pytania
Czy lekcja „Kolejki SQS Standard a FIFO” jest bezpłatna?
Tak — pełny tekst „Kolejki SQS Standard a FIFO” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cloud & IT Cert Prep, przejdź na CoddyKit PRO. Kurs Cloud & IT Cert Prep zawiera 4 lekcji w sumie.
Co nauczysz się w „Kolejki SQS Standard a FIFO”?
Porównają kolejki Standard zapewniające maksymalną przepustowość z kolejkami FIFO gwarantującymi uporządkowane przetwarzanie dokładnie raz oraz wybiorą właściwy typ. Ćwiczysz Cloud & IT Cert Prep z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Cloud & IT Cert Prep?
Nie wymagamy żadnego doświadczenia. Cloud & IT Cert Prep w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Kolejki SQS Standard a FIFO”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Cloud & IT Cert Prep?
Tak. Każda lekcja Cloud & IT Cert Prep zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Kolejki SQS Standard a FIFO
- Visibility Timeout, DLQ i long polling
- Tematy SNS i architektura fan-out
- Filtrowanie wiadomości SQS i integracja SNS + SQS