轻量级消息队列benastalkd
Beanstalkd设计里面的核心概念: ◆ job 一个需要异步处理的任务,是Beanstalkd中的基本单元,需要放在一个tube中。 ◆ tube 一个有名的任务队列,用来存储统一类型的job,是producer和consumer操作的对象。 ◆ producer Job的生产者,通过put命令来将一个job放到一个tube中。 ◆ consumer Job的消费者,通过reserve/release/bury/delete命令来获取job或改变job的状态。 Beanstalkd中一个job的生命周期如图所示。一个job有READY, RESERVED, DELAYED, BURIED四种状态。当producer直接put一个job时,job就处于READY状态,等待consumer来处理,如果选择延迟put,job就先到DELAYED状态,等待时间过后才迁移到READY状态。consumer获取了当前READY的job后,该job的状态就迁移到RESERVED,这样其他的consumer就不能再操作该job。当consumer完成该job后,可以选择delete, release或者bury操作;delete之后,job从系统消亡,之后不能再获取;release操作可以重新把该job状态迁移回READY(也可以延迟该状态迁移操作)