#amazon-web-services #amazon-sqs
#amazon-веб-сервисы #amazon-sqs
Вопрос:
Я новичок в использовании Amazon sqs и поддерживаю некоторые очереди в своей компании. Проблема, с которой я столкнулся, заключается в том, что несколько дней назад некоторые сообщения просто застряли в доступных сообщениях, как вы можете видеть на картинке. Не каждое сообщение застревает.
Ребята, вы знаете, о чем это?
Комментарии:
1. Есть ли у застрявших сообщений вообще общая тема? Общая тема, большой размер, происходят в определенное время и т. Д.? Что вы знаете о потребителях очередей?
Ответ №1:
Похоже, что рабочий не может правильно обработать сообщения из очереди.
Когда рабочий (или приложение) извлекает сообщение из очереди, его необходимо вызвать DeleteMessage()
после завершения обработки. Это удаляет его из очереди.
Однако, если рабочий сбой или не удается вызвать DeleteMessage()
, сообщение автоматически появится снова по истечении периода невидимости.
Вы можете реализовать очередь мертвых писем Amazon SQS, которая будет перемещать сообщения в очередь мертвых писем после того, как они были получены определенное количество раз. Это выведет его из очереди для дальнейшего изучения / обработки.
Ответ №2:
У меня была аналогичная проблема при чтении сообщений из SQS в повторяющемся задании Java @Scheduled. Как указал Джон Ротенштейн, для удаления сообщений из очереди необходимо вызвать метод deleteMessage.
В моем случае проблема заключалась в самом аннотированном методе @Scheduled. По какой-то конкретной причине он не завершил выполнение при определенных условиях, и поэтому планировщик никогда не был готов снова запустить мой метод чтения.
Ответ №3:
В моем случае у меня не было рабочих EC2, доступных для моей очереди A
. Вы можете проверить это, перейдя к соответствующему кластеру.
Elastic Container Services
-> Clusters
-> фильтр для соответствующего кластера A
-> проверка Pending tasks count
и Running tasks count
показатели
Вы можете подождать, пока рабочие файлы снова станут доступны. Или раскрутите некоторые сами.