概念
-
job
一个需要异步处理的任务,是Beanstalkd中的基本单元,需要放在一个tube中。有READY
,RESERVED
,DELAYED
,BURIED
四种状态 -
tube
一个有名的任务队列,用来存储统一类型的job,是producer和consumer操作的对象。 -
producer
Job的生产者,通过put命令来将一个job放到一个tube中。当producer直接put一个job时,job就处于READY
状态,等待consumer来处理,如果选择延迟put,job就先到DELAYED
状态,等待时间过后才迁移到READY状态。 -
consumer
Job的消费者,通过reserve/release/bury/delete命令来获取job或改变job的状态。consumer获取了当前READY
的job后,该job的状态就迁移到RESERVED
,这样其他的consumer就不能再操作该job。当consumer完成该job后,可以选择delete, release或者bury操作;delete之后,job从系统消亡,之后不能再获取;release操作可以重新把该job状态迁移回READY
(也可以延迟该状态迁移操作),使其他的consumer可以继续获取和执行该job;有意思的是bury
操作,可以把该job休眠,等到需要的时候,再将休眠的job kick回READY状态,也可以delete BURIED状态的job。
基本操作
put with delay release with delay
----------------> [DELAYED] <------------.
| |
| (time passes) |
| |
put v reserve | delete
-----------------> [READY] ---------> [RESERVED] --------> *poof*
^ ^ | |
| \ release | |
| ``-------------' |
| |
| kick |
| |
| bury |
[BURIED] <---------------'
|
| delete
``--------> *poof*
将继续补充... ...