从生产者在队列实例上调用add
方法的那一刻起,任务进入一个生命周期,该生命周期将处于不同的状态,直到完成或失败(尽管从技术上讲,失败的任务可以重试并获得新的生命周期)。
当任务添加到队列中时,它可处于等待状态或延迟状态。等待状态其实是一个等待列表,所有列队在处理之前均处于等待状态,延迟状态意味着任务正在等待某些超时或处理失败的任务,延迟任务不会直接处理,而是在工作区间处于空闲状态时,将其放置在等待列表的开头并进行处理。
任务的下一个状态为"活动"状态。活动状态由一Redis的set
集表示,是当前正在处理的任务,这时它们在process
函数中运行。任务可以无限时间的处于处于活动状态,直到过程完成或引发异常,以便任务以"已完成"或"失败"状态结束。
KEYS[1] 'delayed'
KEYS[2] 'active'
KEYS[3] 'wait'
KEYS[4] 'priority'
KEYS[5] 'paused'
KEYS[6] 'meta-paused'
ARGV[1] queue.toKey('')
ARGV[2] delayed timestamp
ARGV[3] queue token
bull:{队列名称}:delayed
bull:{队列名称}:active
bull:{队列名称}:progress