Firma uruchamia aplikację na wielu instancjach Amazon EC2, która przetwarza wiadomości z kolejki Amazon SQS, zapisuje je do tabeli Amazon RDS, a następnie usuwa wiadomość z kolejki. W tabeli RDS sporadycznie pojawiają się zduplikowane rekordy, mimo że kolejka SQS nie zawiera zduplikowanych wiadomości. Co powinien zrobić architekt rozwiązań, aby zapewnić jednokrotne przetwarzanie wiadomości?
Wybierz odpowiedź
Dotknij opcji, aby sprawdzić swoją odpowiedź.
Poprawna odpowiedź: Użyć wywołania API ChangeMessageVisibility do zwiększenia limitu czasu widoczności (visibility timeout)..
Dlaczego to jest odpowiedź
Zwiększenie limitu czasu widoczności (visibility timeout) za pomocą ChangeMessageVisibility jest kluczowe. Gdy instancja EC2 odbiera wiadomość z SQS, wiadomość staje się niewidoczna dla innych konsumentów na czas określony przez visibility timeout. Jeśli przetwarzanie wiadomości (w tym zapis do RDS i usunięcie z SQS) trwa dłużej niż ten limit, wiadomość ponownie staje się widoczna w kolejce. Inna instancja EC2 może ją wtedy odebrać i przetworzyć, co prowadzi do duplikacji w RDS. Wydłużenie limitu czasu widoczności daje instancji wystarczająco dużo czasu na ukończenie wszystkich operacji przed ponownym pojawieniem się wiadomości. Pozostałe opcje są nieprawidłowe: CreateQueue tworzy nową kolejkę, co nie rozwiązuje problemu duplikacji; AddPermission zarządza uprawnieniami dostępu, a nie logiką przetwarzania; ReceiveMessage z długim czasem oczekiwania (long polling) zmniejsza liczbę pustych odpowiedzi, ale nie zapobiega duplikacji, jeśli przetwarzanie wiadomości przekroczy visibility timeout.
Zdaj egzamin — bez niekończącego się szukania odpowiedzi
Uzyskaj wszystkie zweryfikowane pytania i wyjaśnienia do tego egzaminu w jednym miejscu i zaoszczędź godziny przygotowań. Ponad 1000 certyfikacji · Ponad 20 języków · Zacznij za darmo.
Zdaj egzamin szybciej → Karta nie jest wymagana