Я понимаю, что для обеспечения огромной масштабируемости и надежности SQS проводит обширную распараллеливание ресурсов. Он использует избыточные серверы даже для небольших очередей, и даже сообщения, отправленные в очереди, резервируются избыточно в виде нескольких копий. Это факторы, которые мешают ему точно-раз доставки, как в RabbitMQ. Я видел даже удаленные сообщения.
Последствия для разработчиков заключаются в том, что они должны быть готовы к многократной доставке сообщений. Amazon утверждает, что это не проблема, но это так, то разработчик должен использовать некоторую конструкцию синхронизации, такую как блокировка транзакции базы данных или условная запись dynamo-db. обе из них уменьшают масштабируемость.
Вопрос:
В свете проблемы с дублирующейся доставкой, как работает функция сообщение-невидимый период? Сообщение не может быть невидимым. Если разработчик должен самостоятельно организовать синхронизацию, какая польза от периода невидимости. Я видел сообщения, переданные повторно, даже когда они должны были быть невидимыми.
Изменить
здесь я включаю некоторые ссылки
- Что такое хорошая практика для достижения "Точно-раз доставки" ? поведение с Amazon SQS?
- http://aws.amazon.com/sqs/faqs/#How_many_times_will_I_receive_each_message
- http://aws.amazon.com/sqs/faqs/#How_does_Amazon_SQS_allow_multiple_readers_to_access_the_same_message_queue_without_losing_messages_or_processing_them_many_times
- http://aws.amazon.com/sqs/faqs/#Can_a_deleted_message_be_received_again