Принимая во внимание, что цена за запрос является взвешенным случайным распределением, основанным на прибыли амазонки =))
Очевидно, что ваша цель здесь состоит в том, чтобы сократить расходы, будь то путем отправки меньше запросов в SQS или путем принуждения SQS доставлять максимальное количество доступных сообщений.
Как вы указали в своем вопросе, SQS не обязана доставлять максимальное количество доступных сообщений. Однако есть кое-что, о чем я хотел бы сообщить вам, предполагая, что вы еще не знаете об этом.
Длинный опрос
Руководство разработчика Служба простой очереди Amazon сообщает:
Процесс потребления сообщений из очереди зависит от того, используете ли вы короткий или длинный опрос. По умолчанию Amazon SQS использует короткий опрос , который запрашивает только часть своих серверов (на основе взвешенного случайного распределения), чтобы определить, доступны ли какие-либо сообщения для ответа. Вы можете использовать длительный опрос , чтобы сократить ваши расходы, позволяя вашим потребителям получать сообщения, как только они поступят в очередь.
Сообщения, отправленные вами в SQS, могут иметь все хранятся на отдельных серверах. Как указано в документации, может быть запрошено только подмножество серверов, если ваша очередь настроена на использование short polling . Я предполагаю, что вам не повезло при вызове receiveMessage
и каждый раз возвращалось только 3
.
Если мы посмотрим на преимущества длинного опроса 1031 * на той же странице документации, это состояния:
Длинный опрос предлагает следующие преимущества:
Устранить пустые ответы, позволяя Amazon SQS ждать, пока сообщение не станет доступным в очереди, прежде чем отправлять ответ. Если время ожидания соединения не истекло, ответ на запрос ReceiveMessage содержит хотя бы одно из доступных сообщений, вплоть до максимального количества сообщений, указанного в действии ReceiveMessage.
Устранить ложные пустые ответы запрашивая все, а не подмножество серверов Amazon SQS.
Второй пункт здесь очень важен. Даже если вы не видите пустых ответов, на серверах может храниться больше сообщений, которые не запрашиваются. Если вы включите длительный опрос, то, надеюсь, вы увидите увеличение количества возвращаемых сообщений, при условии, что общее количество серверов превышает 3.
Поэтому я предлагаю включить длинный опрос в вашей очереди. Для этого перейдите на страницу Настройка длинного опроса .
Как DevilCode упомянул в своем комментарии ниже, он смог решить свою проблему, используя очередь FIFO вместо стандартной и включающая длинный опрос по ней.