SQS 2 Flashcards
(22 cards)
❗️Как работает 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-ти минут.
Consumer делает слишком много запросов в очередь. Какие это вызывает проблемы? Как их решить?
Это стоит много денег. Или вызывает проблемы с performance. Решение - Long Polling.
❗️Когда использовать технологию Long Polling? Какое значение можно задать? Какие преимущества? На что это похоже?
Всегда, это Best Practice.Снижает количество API запросов к очереди. Повышает эффективность приложения, снижает Latency. От 0 до 20 сек. На батчинг.
Максимальный размер SQS сообщения составляет …
256 KB
Что если сообщение превышает лимит по размеру? Как называется java библиотека? Какой use-case?
SQS Extended Client это название Java библиотеки. Контент сообщения помещается в S3 бакет. А в SQS шлётся маленькое сообщение, содержащее только метаданные. Получив мета-данные о сообщении, консюмер считывает его из S3. Картинки, видео.
Что НЕ нужно делать, если сообщение превысило лимит по размеру SQS?
Дробить его на куски.
❗️В чём разница между DelaySeconds и ReseiveMessageWaitTimeSeconds?
Первое для Message Delay фичи. Второе для Long Polling фичи.
На что похожи Group ID в SQS?
на Partition Key в Kinesis