作业的生命周期
Producer:一个程序,负责向队列中添加任务;
Worker:一个程序,负责完成队列中的任务;
一个作业有四种状态:
- “ready” – 进入队列的初时状态
- “reserved” – 已经被Worker接收
- “delayed” – 延迟执行
- “buried” – 使用bury将作业设置成buried状态,处于该状态的作业不会再执行,直到使用kick命令将其剔除。
下面是一个简单的生命周期
put reserve delete
———> [READY] ————> [RESERVED] ———-> *poof*
(1)Producer使用put命令在Beanstalkd中创建任务,此时作业出于“ready”状态。
(2)作业会一直存在于队列中,并处于“ready”状态,等待Worker的出现;
(3)此时Worker出现,向Beanstalkd发送reserver命令
(4)Beanstalkd取出当前作业的信息,将信息返回给Worker,然后Beanstalkd将作业标记为“reserve”状态。
(5)Worker开始处理作业……
(6)当Worker将作业处理完成,向Beanstalkd发送delete命令,请求删除已经完成的作业。
(7)收到delete请求后,Beanstalkd将作业删除。
参考文献
参考「protocol.txt」文件