2012-04-11 4 views
4

Я не хочу, чтобы сообщение считалось «прочитанным», но я хотел бы знать, что находится в очереди. Документация:Как заглянуть в сообщения в очереди

http://boto.s3.amazonaws.com/ref/sqs.html#module-boto.sqs

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

Справку:

http://aws.amazon.com/articles/1343#12

Имеет некоторые отрывочные решение:

Как заглянуть в сообщение?

С версией 2008-01-01 действие PeekMessage удалено с Amazon SQS. Эта функциональность использовалась главным образом для отладки небольших систем - специально для подтверждения того, что сообщение было успешно отправлено в очередь или удалено из очереди. Чтобы сделать это с версией 2008-01-01, вы можете зарегистрировать идентификатор сообщения и маркер квитанции для своих сообщений, а скорректировать их, чтобы подтвердить, когда сообщение получено, и удален.

Неужели кому-то повезло с этим? Это похоже на очень базовую функциональность очереди, и я был бы шокирован, если бы не было чистого способа сделать это.

ответ

5

В SQS больше нет функции подглядывания, но вы, вероятно, можете выполнить то, что хотите, просто используя get_messages и установив visibility_timeout довольно низко. Пока вы не удаляете прочитанные сообщения, они снова появятся в очереди после истечения срока действия visibility_timeout и будут доступны для чтения. Единственная сложная задача - выяснить, как долго должен быть тайм-аут. Если у вас много и много сообщений в очереди, вам придется сделать несколько вызовов get_messages, чтобы получить их все, и вы, вероятно, не хотите, чтобы ранее прочитанные сообщения снова появлялись, пока вы все еще просматриваете сообщения.

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