PHP消息队列实践 beanstalkd、kafka
一·beanstalkd
1.特点
优先级(支持任务插队),
延迟(delayed 写入队列延迟几秒后才可使用),
持久化 (定时把内存中的数据刷到binlog日志),
预留(把任务设置成预留,消费者无法取出任务,等某个合适时机再拿出来处理),
任务超时重发
2任务工作状态
delayed 延迟状态
ready 准备好状态
reserved 消费者把任务读出来,处理时
buried 预留状态
delete 删除状态
3.安装
仅支持Linux
可yum源安装
4.启动
beanstalkd -l 127.0.0.1 -p 11300
5.php操作类
composer require pda/pheanstalk //composer安装Pheanstalk (PHP操作类)
官网下载地址:https://github.com/pda/pheanstalk/
维护类
stats(运行状态)
listTubes(目前存在的管道) statsTube(管道信息)useTube(使用管道)
statsJob(工作状态) peek(根据ID查找)
生产类
putInTube('管道标识','数据','优先级','延时')
useTube(使用管道)->put('数据','优先级0最大','延时','任务超时重发')
消费类
watch(获取管道)
ignore (排除监听管道)
reserve(阻塞时间)
listTubesWatched(监听管道列表)
release(回滚队列 数据库异常返回队列)
bury(预留-服务器取出放一边等待执行)
kickJob()
kick()
pauseTube(设置管道延迟)
resumeTube(设置管道取消延迟)
使用方法参考
https://www.jianshu.com/p/391d847dc872