2016-10-04 3 views
1

Я пытаюсь разработать интерфейс для команды QA, где они могут проверять сообщения в очереди без входа в AWS.Как получить следующие 10 сообщений SQS после получения первых 10 SQS-сообщений в любой момент времени

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

Как я могу получить следующие 10 сообщений из очереди без использования опции тайм-аута видимости?

ответ

1

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

2

Похоже, что вы можете временно записывать свои сообщения SQS в базу данных одновременно и вместо этого иметь в своем распоряжении сообщения о представлении команд контроля качества в базе данных. SQS не имеет понятия подкачки или «ближайшие 10» - когда вы читаете сообщения из очереди, которую вы должны обрабатывать и удаляете, а затем запрашивайте больше. Просмотр записей в базе данных может быть лучше для целей QA.

+0

Ya, это хорошая идея .. Любые способы использования «10 сообщений», потому что максимальный размер партии для извлечения messesge из очереди равен 10 ... Спасибо E.J – ifti

1

Если вы хотите получить больше сообщений, просто спросите SQS, чтобы получить больше сообщений.

SQS знает, что кто-то уже получил первые 10, но не подозревает, что это был вы. Если вы попросите больше, вы получите больше.

Пока таймер видимости, который по умолчанию не установлен 30 секунд, истекает по полученным сообщениям, вы можете многократно спрашивать и спрашивать и спрашивать, и вы не увидите одни и те же сообщения снова. Сообщения «в полете» - это означает, что SQS ждет, когда кто-то удалит их, изменит их видимость или истечет срок действия таймера. Как только таймер истечет, вы снова начнете их видеть.

Каждая очередь SQS позволяет получать до 120 000 сообщений без подтверждения, удаления или изменения видимости. Удачи ударил этот предел.


я наклоняю время использования видимости, как продукт в производстве и мои инструменты не должны блокировать фактическое обслуживание от потребления MSGS Queue

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

Просмотрите документацию для visibility timeout. Тайм-аут видимости - это то, как долго пользователю разрешено удерживать сообщение без его удаления или изменения таймаута видимости , прежде чем он будет доставлен другому потребителю. Это не задерживает доступность сообщений, которые еще не были потреблены, или сообщений, которые были израсходованы и чей тайм-аут истек или был сброшен.

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


Альтернатива: для действительно независимого пути для анализа сообщений в очереди я использую другой подход: SNS Fanout.

Вместо того, чтобы производитель сообщений отправлял сообщения в SQS напрямую, я отправляю их в тему SNS. Первичная очередь и вторичная очередь являются абонентами этой темы. Приложение потребляет из первичной очереди, и вторичная очередь просто сидит там, собирая вторую копию каждого сообщения. Когда сообщения истекают из вторичной очереди, они просто исчезают (по умолчанию = 4 дня). Это дает мне очень полезный инструмент для устранения неполадок, а также для обработки каких-либо катастрофических последствий для пользователя приложения, что приводит к неправильной обработке сообщений, когда сообщения, полученные от SQS, впоследствии были потеряны из-за неожиданных или необработанных условий.

+0

Спасибо, Майкл за ваш ответ. но я не могу использовать время видимости, поскольку продукт находится в процессе производства, и мои инструменты не должны блокировать фактическое обслуживание из-за потребления очереди сообщений. – ifti

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