Что происходит с сообщением во время опроса в Amazon SQS? - PullRequest
0 голосов
/ 02 августа 2020

Когда я просматривал этот документ Amazon SQS , я обнаружил, что

The queue (which holds messages A through E) redundantly stores the messages across multiple Amazon SQS servers.

введите описание изображения здесь

Итак, мой вопрос: когда я опрашиваю Message A из SQS, это Message A приходит с одного сервера? Тогда что случилось с сообщением, которое хранится на другом сервере? Как они остаются невидимыми до видимого тайм-аута или удаляются, когда потребители удаляют сообщение после обработки?

1 Ответ

3 голосов
/ 02 августа 2020

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

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

Взглянув на документацию, можно сказать следующее:

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

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

...