PHP 第18章 使用Pheanstalk实现消息队列 PHP 第18章 使用Pheanstalk实现消息队列

2022-08-22

一、安装beanstalkd

Beanstalk 是一个简单、快速的消息队列。Beanstalkd 之于 RabbitMQ,就好比 Nginx 之于 Apache,Varnish 之于 Squid。后面在项目中使用 Beanstalkd 的过程中,更发现其简单、轻量级、高性能、易使用等特点,以及优先级、多队列、持久化、分布式容错、超时控制等特性。

安装:

wget https://github.com/kr/beanstalkd/archive/v1.10.tar.gz

tar xzvf beanstalkd-1.10.tar.gz

cd beanstalkd-1.10

make && make install

beanstalkd -v beanstalkd 1.10 2

启动

进入解压的文件夹里面使用
beanstalkd -l 127.0.0.1 -p 11300 &

二、安装pheanstalk依赖

composer require pda/pheanstalk

官网:https://github.com/pheanstalk/pheanstalk

三、Pheanstalk使用方法

维护:

stats() 查看状态方法        

listTubes() 目前存在的管道

listTubesWatched() 目前监听的管道        

statsTube() 管道的状态        

useTube() 指定使用的管道        

statsJob() 查看任务的详细信息        

peek() 通过任务ID获取任务

生产者:

putInTube() 往管道中写入数据        

put() 配合useTube()使用

消费者:

watch() 监听管道,可以同时监听多个管道        

ignore() 不监听管道        

reserve() 以阻塞方式监听管道,获取任务        

reserveFromTube()        

release() 把任务重新放回管道        

bury() 把任务预留        

peekBuried() 把预留任务读取出来        

kickJob() 把buried状态的任务设置成ready        

kick() 批量把buried状态的任务设置成ready        

peekReady() 把准备好的任务读取出来        

peekDelayed() 把延迟的任务读取出来        

pauseTube() 给管道设置延迟        

resumeTube() 取消管道延迟        

touch() 让任务重新计算ttr时间,给任务续命
阅读 925