Подтвердить что ты не робот

Какая хорошая практика для достижения "Роскосмоса" с Amazon SQS?

В соответствии с документацией:

Q: Сколько раз я получаю каждое сообщение?

Amazon SQS - это чтобы обеспечить "по крайней мере один раз" доставку всех сообщений в своем Очереди. Хотя большую часть времени каждое сообщение будет доставлено ваше приложение ровно один раз, вы должны создать свою систему так, чтобы обработка сообщения несколько раз не создает ошибок или непоследовательность.

Есть ли какая-либо хорошая практика для достижения ровно одной доставки?

Я думал об использовании DynamoDB "Условные записи" в качестве распределенного механизма блокировки, но... любая идея лучше?


Некоторые ссылки на эту тему:

4b9b3361

Ответ 1

Очереди FIFO теперь доступны и обеспечивают упорядоченное, точно однократно из коробки.

https://aws.amazon.com/sqs/faqs/#fifo-queues

Проверьте свой регион на наличие.

Ответ 2

Лучшее решение действительно зависит от того, насколько важно, чтобы вы больше не выполняли действия, предлагаемые в сообщении. Для некоторых действий, таких как удаление файла или изменение размера изображения, это не имеет большого значения, если это происходит дважды, поэтому ничего не стоит делать. Когда более важно не выполнять эту работу во второй раз, я использую идентификатор для каждого сообщения (сгенерированного отправителем), а получатель отслеживает дубликаты, отмечая идентификаторы, как показано в memchachd. Прекрасно для многих вещей, но, вероятно, нет, если от этого зависит жизнь или деньги, особенно если есть несколько потребителей.

Условные записи звучат как умное решение, но мне интересно, возможно ли, что AWS не является таким прекрасным решением для вашей проблемы, если вам понадобится хотя бы одно решение для устранения пули.

Ответ 3

Другой альтернативой для распределенной блокировки является кластер Redis, который также может быть снабжен AWS ElasticCache. Redis поддерживает transactions, которые гарантируют, что одновременные вызовы будут выполняться последовательно.

Одним из преимуществ использования кеша является то, что вы можете установить тайм-ауты истечения срока действия, поэтому, если ваша обработка сообщений завершится неудачно, блокировка начнет выпуск по времени.