beanstalkd 轻量级队列

发表于 2021-05-08  1.54k 次阅读


安装

wget https://github.com/beanstalkd/beanstalkd/archive/refs/tags/v1.12.zip
unzip v1.12.zip
cd beanstalkd-1.12
make && make install
beanstalkd -v 出现版本信息就代表更新成功了

启动服务

./beanstalkd -l 0.0.0.0 -p 11300 -b ./binlog
-l 指定ip访问 0.0.0.0不限制
-p 指定端口
-b 持久化文件目录(需要提前创建并给权限)

安装对应语言的拓展

https://github.com/beanstalkd/beanstalkd/wiki/Client-Libraries

PHP 简单使用

pheanstalk/pheanstalk

安装

composer require pda/pheanstalk

塞入任务

use Pheanstalk\Pheanstalk;

//监听服务
$pheanstalk = Pheanstalk::create("127.0.0.1");

//使用 jobs 队列
$pheanstalk->useTube("jobs");
for ($i = 1; $i <= 10; $i++) {
    //塞入队列任务 任务内容 任务权重 延时时间 执行时间
    $pheanstalk->put("this is job {$i}", 1024, 30, 600);
}

执行任务(可同时启动多个执行任务)

use Pheanstalk\Pheanstalk;

//监听服务
$pheanstalk = Pheanstalk::create("127.0.0.1");

//监听 jobs 队列
$pheanstalk->watch("jobs");

while (true) {
    try {
        //阻塞获取任务
        $job = $pheanstalk->reserve();

        //任务内容
        $data = $job->getData();
        echo $data;
        sleep(1);

        //删除任务
        $pheanstalk->delete($job);
    }
    catch (Exception $ex) {
        //重试任务
        $pheanstalk->release($job);
    }
}
本站文章基于国际协议BY-NA-SA 4.0协议共享;
如未特殊说明,本站文章皆为原创文章,请规范转载。

0

一盏灯 一座城 找一人 一路的颠沛流离