SQS 2 Flashcards
Как работает FIFO Deduplication?
Content-based Deduplication (SHA-256 hash of message body) и Explicit Message Deduplication ID (мы явно выделяем поле для ID).
Что такое FIFO Message Grouping? В каком сервисе оно есть? Для чего она нужна?
Эта фича FIFO позволяет группировать сообщения, обеспечив им всем обработку одним и тем же Consumer’ом. Есть в SQS и SNS.
Есть ли Message Grouping в Standard? Как задаётся Message Grouping в FIFO?
НЕТ, только для FIFO, соблюдая порядок. Задаётся через поле MessageGroupId, обязательное для всех FIFO.
Default Message Visibility Timeout?
30 секунд
Что такое Message Visibility Timeout? Зачем оно нужно? На что это похоже?
Когда сообщение стягивается (polled by) Consumer’ом, то оно становится НЕ видимым для других Consumer’ов на некоторое время. В случае успешной обработки, Consumer удалит сообщение. В противном случае сообщение снова будет доступно для poll’инга этим или другими консюмерами. НИ НА ЧТО. В SNS сообщение шлётся всем и каждому consumer’у.
Как можно выбирать значение для MessageGroupId в FIFO? От чего это зависит?
Если MessageGroupId одинаковый для ВСЕХ сообщений, то FIFO подарок обеспечен для ВСЕЙ очереди. Если MessageGroupId одинаковый только в рамках ГРУППЫ сообщений (каждая группа для всего Consumer’а), то FIFO порядок обеспечен только внутри каждой группы.
Что если SQS очередь находится в аккаунте “A”, а EC2 instance Consumer находится в аккаунте “B”? Как выглядит синтаксис?
нужно использовать IAM Resource Based Policy для SQS очереди, ведь Resource Based Policy (как и в S3) являются Cross Account. Principle: {AWS: 111222333444}
На что похоже Message Visibility Timeout в базах данных?
“блокировка на чтение”, “резервация” сообщения на время обработки, чтобы избежать аномалий чтения/записи данных.
Что если Consumer НЕ успевает закончить обработку сообщения? Что можно с этим сделать?
Будет дублированная обработка сообщения. Consumer может выполнить операцию ChangeMessageVisibility API call.
Как можно предотвратить беконечный цикл обработки НЕ валидного сообщения? Как называется параметр?
Dead Letter Queue, MaximumReceives threshold
Что обозначает MaximumReceives threshold?
Максимальное количество раз, которое консюмеры могут попробовать обработать это сообщение. До отправки в DLQ.
Что с настройками DLQ? Какой Retention?
DLQ - это обычная SQS очередь с обычными настройками и лимитами. Retention рекомендуется выбрать побольше, например максимум 14 дней.
Какой тип должна иметь DLQ?
такой же, как и основная очередь. Если основная Standard, то и Dead должна быть Standard.
Что делать с мёртвыми сообщениями, чтобы НЕ потерять пользовательские данные? Как называется? Нужно ли писать Java код?
Устранить проблему в Java-коде. Направить сообщения из Dead в основную очередь через операцию “Redrive to Source”. Кастомный код писать НЕ придётся.
Что такое Delay Queue? Где его можно указать? Каково его значение?
Возможность делать сообщение доступным для чтения НЕ сразу. Можно для всей очереди или для одного сообщения. Значение до 15-ти минут.