0

У меня есть демон, который постоянно объединяет очередь AWS SQS для сообщений, как только он получает сообщение, мне нужно постоянно увеличивать тайм-аут видимости до тех пор, пока сообщение не будет обработано.On Demand Scheduler

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

Я пробовал использовать Spring Scheduler (https://spring.io/guides/gs/scheduling-tasks/), но это не соответствует моим потребностям, так как оно не по требованию и работает независимо от того, что.

  • Это делается на распределенной системе с большим парком.
  • Для полного обработки сообщения может потребоваться до 10 часов.
  • Мы не можем установить тайм-аут видимости по умолчанию для очереди на большое количество (по другим причинам).

Я просто хотел бы знать, есть ли там хорошая библиотека, чтобы я мог использовать ее для этого? Спасибо за помощь!

ответ

0

Учитывая сценарий, вытащить сообщение (при этом таймер таймаута видимости видимости), а затем попытаться получить блокировку, это не самый осуществимый способ сделать это (тем более, что сообщения могут занять так много времени для обработки).

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

Сначала мы получаем блокировку, а затем вытягиваем сообщение, а затем увеличиваем тайм-аут видимости до 11 часов, после того как мы получили блокировку.

0

Максимальный тайм-аут видимости для сообщения SQS: 12 hours. Вы приближаетесь к этому пределу. Возможно, вам стоит подумать о том, чтобы удалить сообщение из очереди во время его обработки, и если возникла ошибка или возникла необходимость, вы можете повторно отправить сообщение в очередь.

Вы можете установить триггер для Spring Scheduler, который позволяет вручную установить следующее время выполнения. См. Это answer. Это дает вам больше контроля при запуске запланированной задачи.

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