beanstalkd

Posted chinano1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了beanstalkd相关的知识,希望对你有一定的参考价值。

yum 方式安装:yum -y install beanstalkd
 
启动:/usr/bin/beanstalkd -l 0.0.0.0 -p 11300 -b /var/lib/beanstalkd/binlog -F

-b 开启binlog,断电后重启会自动恢复任务。

配置文件:/etc/sysconfig/beanstalkd

 

技术分享图片

 

 

对job
5个状态
● READY - 需要立即处理的任务,当延时 (DELAYED) 任务到期后会自动成为当前任务;
● DELAYED - 延迟执行的任务, 当消费者处理任务后, 可以用将消息再次放回 DELAYED 队列延迟执行;
● RESERVED - 已经被消费者获取, 正在执行的任务。Beanstalkd 负责检查任务是否在 TTR(time-to-run) 内完成;
● BURIED - 保留的任务: 任务不会被执行,也不会消失,除非有人把它 "踢" 回队列;
● DELETED - 消息被彻底删除。Beanstalkd 不再维持这些消息。
7种操作
● put- 放入任务
● reserve- 以阻塞方式监听管道,获取任务
● delete- 删除任务
● bury- 把任务预留
● realease- 把任务重新放回管道
● kick-批量把buried状态的任务设置成ready
● PEEK-把预留任务读取出来
对tube
4种操作
● watch - 监听管道,可以同时监听多个管道;
● userTobe - 指定使用的管道
● ignore - 不监听管道
● pause - 给管道设置延迟

 

优点:

优先级
支持0到2**32的优先级,值越小,优先级越高,默认优先级为1024。
持久化
可以通过binlog将job及其状态记录到文件里面,在Beanstalkd下次启动时可以通过读取binlog来恢复之前的job及状态。
延时处理
执行put操作时,传入时间参数,可以在指定时间之后让consumer消费

缺点:

无主从复制、为解决宕机风险引入的代价较高

 

注:如有不妥之处,欢迎指正





















以上是关于beanstalkd的主要内容,如果未能解决你的问题,请参考以下文章

beanstalkd

beanstalkd任务队列 linux平台安装测试

使用Beanstalkd实现队列

如何使用 PHP 设置 Beanstalkd

Laravel 队列与 beanstalkd 和 redis 重复

Beanstalkd一个高性能分布式内存队列系统