Очередь Bull: обеспечить уникальное задание в течение определенного периода времени, используя частичную метку времени в jobId - PullRequest
0 голосов
/ 21 мая 2018

Мне нужно убедиться, что то же задание, добавленное в очередь, не дублируется в течение определенного периода времени.

Стоит ли включать частичные метки времени (т.е. D/M/Y-HH:M) в мои уникальные строки jobId, поэтому он обрабатывается, только если не в одну и ту же минуту?

Это все равно будет дублироваться, если одно заданиебыл добавлен на 12:01, а другой на 12:09 - или у Bull есть намного лучший способ сделать это?

1 Ответ

0 голосов
/ 25 января 2019

Я чувствую, что вам следует использовать API Bull, чтобы проверить, выполняется задание или нет, тогда вы решаете, добавите ли задание в очередь, если нет (исправление для производителя).

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

Вы можете использовать очередь getJobsФункция для этого:

getJobs(types: string[], start?: number, end?: number, asc?: boolean):Promise<Job[]>

"Returns a promise that will return an array of job instances of the given types. Optional parameters for range and ordering are provided."

Из документации: https://github.com/OptimalBits/bull/blob/develop/REFERENCE.md#queuegetjobs

Элемент Job должен содержать достаточно данных, чтобы вы могли найти тот, который ищете.

...