SQS 2 Flashcards

1
Q

Как работает FIFO Deduplication?

A

Content-based Deduplication (SHA-256 hash of message body) и Explicit Message Deduplication ID (мы явно выделяем поле для ID).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Что такое FIFO Message Grouping? В каком сервисе оно есть? Для чего она нужна?

A

Эта фича FIFO позволяет группировать сообщения, обеспечив им всем обработку одним и тем же Consumer’ом. Есть в SQS и SNS.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Есть ли Message Grouping в Standard? Как задаётся Message Grouping в FIFO?

A

НЕТ, только для FIFO, соблюдая порядок. Задаётся через поле MessageGroupId, обязательное для всех FIFO.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Default Message Visibility Timeout?

A

30 секунд

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Что такое Message Visibility Timeout? Зачем оно нужно? На что это похоже?

A

Когда сообщение стягивается (polled by) Consumer’ом, то оно становится НЕ видимым для других Consumer’ов на некоторое время. В случае успешной обработки, Consumer удалит сообщение. В противном случае сообщение снова будет доступно для poll’инга этим или другими консюмерами. НИ НА ЧТО. В SNS сообщение шлётся всем и каждому consumer’у.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Как можно выбирать значение для MessageGroupId в FIFO? От чего это зависит?

A

Если MessageGroupId одинаковый для ВСЕХ сообщений, то FIFO подарок обеспечен для ВСЕЙ очереди. Если MessageGroupId одинаковый только в рамках ГРУППЫ сообщений (каждая группа для всего Consumer’а), то FIFO порядок обеспечен только внутри каждой группы.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Что если SQS очередь находится в аккаунте “A”, а EC2 instance Consumer находится в аккаунте “B”? Как выглядит синтаксис?

A

нужно использовать IAM Resource Based Policy для SQS очереди, ведь Resource Based Policy (как и в S3) являются Cross Account. Principle: {AWS: 111222333444}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

На что похоже Message Visibility Timeout в базах данных?

A

“блокировка на чтение”, “резервация” сообщения на время обработки, чтобы избежать аномалий чтения/записи данных.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Что если Consumer НЕ успевает закончить обработку сообщения? Что можно с этим сделать?

A

Будет дублированная обработка сообщения. Consumer может выполнить операцию ChangeMessageVisibility API call.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Как можно предотвратить беконечный цикл обработки НЕ валидного сообщения? Как называется параметр?

A

Dead Letter Queue, MaximumReceives threshold

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Что обозначает MaximumReceives threshold?

A

Максимальное количество раз, которое консюмеры могут попробовать обработать это сообщение. До отправки в DLQ.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Что с настройками DLQ? Какой Retention?

A

DLQ - это обычная SQS очередь с обычными настройками и лимитами. Retention рекомендуется выбрать побольше, например максимум 14 дней.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Какой тип должна иметь DLQ?

A

такой же, как и основная очередь. Если основная Standard, то и Dead должна быть Standard.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Что делать с мёртвыми сообщениями, чтобы НЕ потерять пользовательские данные? Как называется? Нужно ли писать Java код?

A

Устранить проблему в Java-коде. Направить сообщения из Dead в основную очередь через операцию “Redrive to Source”. Кастомный код писать НЕ придётся.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Что такое Delay Queue? Где его можно указать? Каково его значение?

A

Возможность делать сообщение доступным для чтения НЕ сразу. Можно для всей очереди или для одного сообщения. Значение до 15-ти минут.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Consumer делает слишком много запросов в очередь. Какие это вызывает проблемы? Как их решить?

A

Это стоит много денег. Или вызывает проблемы с performance. Решение - Long Polling.

13
Q

Когда использовать технологию Long Polling? Какое значение можно задать? Какие преимущества? На что это похоже?

A

Всегда, это Best Practice.Снижает количество API запросов к очереди. Повышает эффективность приложения, снижает Latency. От 0 до 20 сек. На батчинг.

14
Q

Максимальный размер SQS сообщения составляет …

A

256 KB

15
Q

Что если сообщение превышает лимит по размеру? Как называется java библиотека? Какой use-case?

A

SQS Extended Client это название Java библиотеки. Контент сообщения помещается в S3 бакет. А в SQS шлётся маленькое сообщение, содержащее только метаданные. Получив мета-данные о сообщении, консюмер считывает его из S3. Картинки, видео.

16
Q

Что НЕ нужно делать, если сообщение превысило лимит по размеру SQS?

A

Дробить его на куски.

17
Q

В чём разница между DelaySeconds и ReseiveMessageWaitTimeSeconds?

A

Первое для Message Delay фичи. Второе для Long Polling фичи.

18
Q

На что похожи Group ID в SQS?

A

на Partition Key в Kinesis