目录
一、Beanstalkd是什么?
Beanstalkd是一个高性能,轻量级的分布式内存队列
二、Beanstalkd特性
1、支持优先级(支持任务插队)
2、延迟(实现定时任务)
3、持久化(定时把内存中的数据刷到binlog日志)
4、预留(把任务设置成预留,消费者无法取出任务,等某个合适时机再拿出来处理)
5、任务超时重发(消费者必须在指定时间内处理任务,如果没有则认为任务失败,重新进入队列)
三、Beanstalkd核心元素
生产者 -> 管道(tube) -> 任务(job) -> 消费者
Beanstalkd可以创建多个管道,管道里面存了很多任务,消费者从管道中取出任务进行处理。
四、任务job状态
delayed 延迟状态,延迟执行的任务, 当消费者处理任务后,可以用将消息再次放回 DELAYED 队列延迟执行;
ready 准备好状态,需要立即处理的任务,当延时 (DELAYED) 任务到期后会自动成为当前任务;
reserved 消费者把任务读出来,已经被消费者获取, 正在执行的任务,Beanstalkd 负责检查任务是否在 TTR(time-to-run) 内完成;
buried 预留状态,保留的任务: 任务不会被执行,也不会消失,除非有人把它 “踢” 回队列;
delete 删除状态,消息被彻底删除。Beanstalkd 不再维持这些消息。