Получить сообщение SQS из приоритетной очереди - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть 3 очереди SQS:

  • HighPQueue1
  • MediumPQueue2
  • LowPQueue3

Сообщения вставляются в очередь на основе вызов API REST шлюза API. Если сообщение имеет высокий приоритет, оно отправляется в HighPQueue1. Если сообщение среднее, оно отправляется в MediumPQueue2. Если сообщение является низким, оно переходит к LowPQueue3.

Сообщения из этих 3 очередей должны читаться в порядке приоритета. Как я могу сделать это, используя AWS?

Я думал о создании лямбды, а затем проверял, доступно ли сообщение сначала в HighPQueue1, затем в MediumPQueue2, а затем в LowPQueue3. Правильный ли это подход?

Мне нужно запускать AWS пошаговые функции для каждого сообщения SQS в зависимости от приоритета. Я хочу ограничить до 10 одновременных запросов на мои AWS пошаговые функции в любой данный момент времени.

1 Ответ

0 голосов
/ 24 февраля 2020

Вы не сможете использовать лямбда-интеграцию для этого, но вы все равно можете использовать лямбда, если хотите запускать новый вызов время от времени. Я думаю, что вы предлагаете для шаблона правильно (проверьте высокий, затем средний, затем низкий). Вот некоторые вещи, которые следует иметь в виду.

  1. Убедитесь, что при проверке средних и нижних очередей вы запрашиваете только одно сообщение за раз, если важно, чтобы сообщения с высокой очередью обрабатывались быстро.
  2. Если вы обрабатываете любое сообщение, вы начинаете сначала. Другими словами, не делайте ошибку, обрабатывая высокий элемент, а затем проверяйте среднюю очередь. Всегда начинайте сначала.
  3. Лямбда может быть не лучшим вариантом, если вы опрашиваете очереди. Вы будете эффективно запускать лямбда-вычисления все время. Это все еще может быть хорошо, если это единственная рабочая нагрузка, и вы находитесь в пределах или близко к свободному уровню.
  4. Рассмотрите возможность обработки нескольких запросов одновременно. Есть ли в вашей нисходящей инфраструктуре что-то, что ограничивает вас обработкой одного сообщения за раз? Если нет, то я бы полностью пропустил эту модель и go с одной очередью, поддерживаемой лямбда-сервером, и параллельным выполнением процессов при входе нескольких.
...