Amazon SQS FIFO Queues - PullRequest
       40

Amazon SQS FIFO Queues

0 голосов
/ 07 ноября 2018

Мы используем очереди AMAZON SQS FIFO для обработки сервиса бронирования встреч для нашего приложения. Как только сообщение попадает в очередь, оно запускает функцию Amazon Lambda для управления процессом бронирования. Поскольку это очередь FIFO, мы гарантируем, что если 2 человека запрашивают один и тот же слот, слот будет передан первому запрашивающему. У меня вопрос: есть ли способ (может быть, настройка в очередях SQS FIFO?), Который гарантирует, что одно сообщение не вызовет функцию Amazon Lambda до тех пор, пока предыдущее сообщение не завершит выполнение. Я просто пытаюсь избежать необходимости писать дополнительную логику (что-то вроде системы блокировки слотов), чтобы гарантировать, что на один и тот же слот не будут нацелены 2 последовательных сообщения до первого завершения процесса «бронирования» , Спасибо.

1 Ответ

0 голосов
/ 08 ноября 2018

Вот как я решил проблему.

Я бы вообще не рекомендовал использовать SQS , и вам не нужны какие-либо функции, предлагаемые SQS для вашего сценария использования.

Переместился из SQS в Kinesis Data Streams и установил размер пакета в 1 для запуска Lambda. Это позаботится об этом. Kinesis streams - это ФИФО. Также Kinesis очень хорошо масштабируется по сравнению с транзакционными очередями FIFO SQS.

Производитель -> Потоки данных Kinesis -> (Лямбда-триггер [Размер пакета в 1]) лямбда

Учитывая случаи ошибок,

Ошибка обработки:

Если ваша лямбда не работает во время обработки потоковых данных, ваша контрольная точка будет повторять попытки с неограниченным числом попыток. Вы должны убедиться, что исправили свою лямбду и заставили ее двигаться вперед. Общее время повторных попыток равно общему времени, когда вы настроили доступность данных в потоке.

Ошибка в Lamda:

Если у вас есть ошибка в лямбде, и вы хотите вернуться с начала потока, вы можете сделать это.

Надеюсь, это поможет.

...