2015-01-17 3 views
0

Я пишу сценарий, чтобы ограничить/контролировать количество сообщений для каждой очереди, когда достиг определенного порога. Я хочу прочитать количество доступных сообщений в очереди, прежде чем добавлять к нему больше сообщений.SQS: Получить сообщение

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

Я смотрел на методах SQS PHP, и я не не вижу никакого способа, чтобы просмотреть текущий размер очереди или доступные сообщения для рабочих - http://docs.aws.amazon.com/aws-sdk-php/latest/class-Aws.Sqs.SqsClient.html

есть ли способ, чтобы прочитать сообщение, доступное в очередь?

enter image description here

ответ

3

Использование client.getQueueAttributes('ApproximateNumberOfMessages')

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

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

+0

Спасибо за ответ .. Что касается вашего предложения Автомасштабирование с EC2 в моем случае неприменимо, потому что моя вычислительная мощность или мои рабочие являются мобильными телефонами, которые отправляют сообщения получателям. Я еще раз подумаю, если я должен остановить пользователя при отправке сообщения или просто сообщить им, что серверы заняты, а их сообщения потребуется некоторое время для доставки. – mboy

Смежные вопросы