2012-04-17 5 views
5

У меня есть небольшой набор сообщений в очереди SQS, которые не удаляются, даже если запрос удаления, отправленный конечной точке AWS, возвращается с ответом 200. Сообщения обрабатываются с помощью моего приложения, а запрос удаления также отправляется отлично.Сообщения SQS не удаляются

Я использую Java AWS SDK 1.3.6.

У кого-нибудь еще возникла эта проблема?

+0

Эти сообщения SQS не удалены вообще или это занимает всего несколько секунд? Не могли бы вы показать нам какой-то код? – Daan

+0

Hi Daan. Они никогда не удаляются, или, по крайней мере, они не были в последние несколько часов. Я мог бы показать вам какой-то код, но это просто регулярное использование AWS SDK, поэтому нет особого смысла! –

+0

Хмм, у меня никогда не было этой проблемы. Можете ли вы удалить их вручную с консоли управления веб-мастером AWS? Это влияет на все ваши очереди SQS или только на этот? Если у вас его есть, можете ли вы попытаться создать новую очередь и посмотреть, работает ли тот же код для удаления сообщений из этой очереди? Я не вижу никаких проблем на странице статуса сервиса AWS, поэтому я не думаю, что SQS действует. Может быть. – Daan

ответ

9

Упс - очередь была случайно установлена ​​в defaultVisibilityTimeout=0. Изменение этого значения на положительное значение устранило проблему.

Это до сих пор вызывает несколько вопросов, хотя:

  1. Почему это влияет только на некоторые сообщения? Возможно, некоторые из них заняли больше времени?
  2. Почему Amazon возвратил 200 для удаления, когда сообщения не удалялись?
  3. Было ли удаление неудачным, потому что оно упало за пределами 0-секундного окна (в этом случае почему любые удаленные запросы преуспели?), Или они потерпели неудачу, потому что другой потребитель поднял их к моменту, когда запрос удаления был получено?
+0

Хм. Это загадочно. Я не знаю ответов на эти вопросы, но я бы хотел услышать, есть ли кто-нибудь, кто это делает. Спасибо за совместное решение, кстати! – Daan

+0

Я сейчас испытываю то же самое, используя JavaScript SDK. Мой тайм-аут тоже был 0, но увеличение его не помогло. Я тоже получаю успешные сообщения, но только когда я удаляю через консоль AWS, это работает. Любые обновления от кого? –

+0

@ Даан, вы можете проверить мой ответ и подтвердить, что это так? Благодаря ! –

1

Официальная документация (версия 1.9.13)

ВАЖНО: Возможно, вы получите сообщение, даже после того, как вы удалили его. Это может произойти в редких случаях, если один из серверов , сохраняющий копию сообщения, недоступен, когда вы запрашиваете , чтобы удалить сообщение. Копия остается на сервере и может быть снова возвращена вам на следующий запрос на получение. Вы должны указать , чтобы ваша система была идемпотентной, так что получение определенного сообщения не является проблемой.

+0

Одним из решений является расширение таймаута видимости (в идеале программно). –

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