Временно приостановить приложение рабочего уровня SQS

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

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

Спасибо


person northernMonkey    schedule 29.10.2014    source источник


Ответы (4)


Для всех, кто находится в той же лодке, что и я, я просто хочу опубликовать свое собственное неэлегантное решение.

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

person northernMonkey    schedule 20.02.2015

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

person Lubo Sach    schedule 30.10.2014
comment
Проблема, с которой мы сталкиваемся, заключается в том, что мы устанавливаем максимальное количество повторных попыток равным 1. Когда сообщение потребляется, оно вносит изменения в базу данных для нескольких различных транзакций. Если одна из этих транзакций падает или возникает исключение, мы не хотим, чтобы это сообщение использовалось снова, поэтому вместо этого оно отправляется в нашу очередь недоставленных сообщений. - person northernMonkey; 30.10.2014

Не уверен, поможет ли это, но вы можете добавить задержку доставки в очередь SQS: щелкните очередь правой кнопкой мыши -> настроить очередь -> установить Delivery Delay до 15 минут. Любое сообщение будет получено после этой задержки. Это позволяет мне «приостановить» очередь на срок до 15 минут.

person xhafan    schedule 13.01.2020

Вы можете завершить среду и создать ее заново. Если у вас нет возможности воссоздать ту же среду с помощью одной команды, взгляните на: https://github.com/ThoughtWorksStudios/eb_deployer

person Pengchao Wang    schedule 18.06.2015