Если вы хотите получить больше сообщений, просто спросите SQS, чтобы получить больше сообщений.
SQS знает, что кто-то уже получил первые 10, но не подозревает, что это был вы. Если вы попросите больше, вы получите больше.
Пока таймер видимости, который по умолчанию не установлен 30 секунд, истекает по полученным сообщениям, вы можете многократно спрашивать и спрашивать и спрашивать, и вы не увидите одни и те же сообщения снова. Сообщения «в полете» - это означает, что SQS ждет, когда кто-то удалит их, изменит их видимость или истечет срок действия таймера. Как только таймер истечет, вы снова начнете их видеть.
Каждая очередь SQS позволяет получать до 120 000 сообщений без подтверждения, удаления или изменения видимости. Удачи ударил этот предел.
я наклоняю время использования видимости, как продукт в производстве и мои инструменты не должны блокировать фактическое обслуживание от потребления MSGS Queue
Я точно не знаю, что это значит. Если вы говорите, что ваша очередь имеет тайм-аут видимости по умолчанию, равный 0, тогда настоящая проблема заключается в том, что вы начинаете с этого неправильно. Таймаут видимости по умолчанию, равный 0, приведет к дублированию доставки сообщения, если у вас более одного потребителя.
Просмотрите документацию для visibility timeout. Тайм-аут видимости - это то, как долго пользователю разрешено удерживать сообщение без его удаления или изменения таймаута видимости , прежде чем он будет доставлен другому потребителю. Это не задерживает доступность сообщений, которые еще не были потреблены, или сообщений, которые были израсходованы и чей тайм-аут истек или был сброшен.
Если вы хотите проверять сообщения без блокировки приложения, извлеките их из очереди, отправив столько запросов, сколько вам нужно (сделайте несколько запросов, если их больше 10), а затем немедленно отправьте запрос API для установки таймаут видимости до 0 для этих сообщений. Это немедленно освободит их, чтобы их потреблять снова, приложением (или этим инструментом, если приложение загружено, конечно).
Альтернатива: для действительно независимого пути для анализа сообщений в очереди я использую другой подход: SNS Fanout.
Вместо того, чтобы производитель сообщений отправлял сообщения в SQS напрямую, я отправляю их в тему SNS. Первичная очередь и вторичная очередь являются абонентами этой темы. Приложение потребляет из первичной очереди, и вторичная очередь просто сидит там, собирая вторую копию каждого сообщения. Когда сообщения истекают из вторичной очереди, они просто исчезают (по умолчанию = 4 дня). Это дает мне очень полезный инструмент для устранения неполадок, а также для обработки каких-либо катастрофических последствий для пользователя приложения, что приводит к неправильной обработке сообщений, когда сообщения, полученные от SQS, впоследствии были потеряны из-за неожиданных или необработанных условий.
Ya, это хорошая идея .. Любые способы использования «10 сообщений», потому что максимальный размер партии для извлечения messesge из очереди равен 10 ... Спасибо E.J – ifti