Как долго могут сохраняться повторяющиеся сообщения SQS? - PullRequest
0 голосов
/ 13 января 2020

Я использую очередь SQS в своем приложении. Для обработки дубликатов я храню уникальный идентификатор из элемента очереди в таблице DynamoDB. Затем для каждого элемента я проверяю, существует ли он первым.

Как долго я должен хранить эти идентификаторы в моей таблице DynamoDB? т. е. после того, как предмет обработан, через сколько времени можно получить дубликаты этого предмета из SQS?

Спасибо

Ответы [ 3 ]

0 голосов
/ 13 января 2020

В SQS есть 2 режима - стандартная очередь и FIFO.
Предположим далее, что потребители удаляют обработанные сообщения (если у вас его нет, то это то, что вам нужно в первую очередь).

В очереди FIFO нет доставленных дубликатов. Стандартная очередь может иметь дубликаты. Поскольку у вас есть дубликаты, давайте go далее со стандартной очередью.

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

Если вам нужна строгая согласованность и конкретные числа, то go с очередью FIFO.

0 голосов
/ 14 января 2020

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

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

0 голосов
/ 13 января 2020

Насколько я знаю, нет задокументированных временных рамок. Это должно занять несколько секунд.

...