Каждый день у меня будет выполнение задачи CRON, которая заполняет очередь SQS множеством задач, которые должны быть достигнуты. Так (например) в 9 утра каждое утро, а пустая очередь получит ~ 100 сообщений, которые нужно будет обработать.Ограничение скорости Работник для очереди (например: SQS)
Я хотел бы, чтобы новый работник вращался каждую секунду, пока очередь не пуста. Если какая-либо задача выходит из строя, она помещается в обратную сторону очереди для повторного запуска.
Например, если каждая задача занимает до 1,5 секунд, чтобы закончить: второй
- после того, как 1, 1 работник начал ообщение
- через 2 секунды, 1 работник может все еще быть запущен ообщение и 1 работник начнет выполнение сообщения B
- через 100 секунд, 1 рабочий может все еще работать с сообщением XX, а 1 работник будет получать сообщение B, потому что он не прошел предыдущий
- через 101 секунду больше рабочих не распространялось до тех пор, пока следующим утром
Есть ли какой-либо способ настроить этот тип инфраструктуры в рамках AWS лямбда?
Это интересный прецедент. Можете ли вы дать нам представление о том, почему необходимо ограничение 1-й скорости (даже в широком смысле)? Это может быть выполнено с помощью Executor, который генерирует 1 поток в секунду и обрабатывает ровно 1 опрос SQS, а затем работает неудавшаяся очередь, если не пустая, - но мне все еще интересно, где это было бы желательно. Благодаря! –
Мы используем его для связи с сторонним API, который ограничивает использование нами своих услуг максимум одним запросом в секунду. – bashaus