есть что-то готовое?
Основных задач две - rate limit (с этим вопросов нет) и ограничение по времени на запуск задачи (не на время работы).
Если задача не успела запуститься за определенное время MAX_DELAY (например есть более приоритетные или очередь "занята") - она должна зафейлиться через это время
Сейчас использую bottleneck с конструкцией вида if (now() - startDate > MAX_DELAY) return Promise.reject('Too late to start')
но с таким вариантом есть проблема в том, что если в очеререди висят куча задач, которые точно зафейлятся при старте,и новые задачи не попадут в планировщик и тоже зафейлятся
такое ощущение, что ты усложняешь, почему-бы просто не выставлять TTL для сообщений (так могут многие очереди, тот же кролик вроде), как-бы никто не взял его в работу - оно само же внутри очереди и померло тихо, и просто в итоге не дойдёт до воркера
Обсуждают сегодня