美文网首页
Easyswoole 对列的基本使用

Easyswoole 对列的基本使用

作者: 骑蚂蚁上高速_jun | 来源:发表于2020-05-31 22:26 被阅读0次
  1. 安装对列组件
composer require easyswoole/queue --ignore-platform-reqs

2.创建对列类

1.\App\Queue\EmailQueue::class;
<?php
namespace App\Queue;
use EasySwoole\Component\Singleton;
use EasySwoole\Queue\Queue;
class EmailQueue extends Queue
{
    use Singleton;
}
2.\App\Queue\SmsQueue::class;
<?php
namespace App\Queue;
use EasySwoole\Component\Singleton;
use EasySwoole\Queue\Queue;
class SmsQueue extends Queue
{
    use Singleton;
}

3.注册自定义进程
在 EasySwooleEvent.php 事件类中的 mainServerCreate方法注册

$redisConfig = new \EasySwoole\Redis\Config\RedisConfig([
            "host"=>"127.0.0.1", // 设置 host
            "port"=>6379,// 设置 端口
            "auth"=>"",// 设置redis登陆密码
            "timeout"=>3, // 选择超时时间
            "reconnectTimes"=>3,// 配置重连时间
            "db"=>0, // 配置使用的数据库
        ]);
// 注册发送邮件对列
QueueTest::getInstance(new \EasySwoole\Queue\Driver\Redis(new \EasySwoole\RedisPool\RedisPool($redisConfig),"sendEmail"));
// 注册发送短信进程
QueueTest2::getInstance(new \EasySwoole\Queue\Driver\Redis(new \EasySwoole\RedisPool\RedisPool($redisConfig),"sendSms"));
  1. 创建2个自定义进程守护进程
在自定义进程的run方法中
/**
     * @param $arg
*  设置监听 邮件对列。。 短信测试监听对列同理
     */
    protected function run($arg)
    {
        // 调用监听方法,会阻塞进程
        \App\Queue\EmailQueue::getInstance()->consumer()->listen(function (Job $job){
            var_dump($job->getJobData());
        });

        echo "~~此处代码不会执行~~~\n";
    }

  1. 生产者方法,生产方法可以在框架任意地方调用
$job = new \EasySwoole\Queue\Job();
 $job->setJobData(['time'=>time(),"scene"=>"email"]);
\App\Queue\SmsQueue::getInstance()->producer()->push($job);

相关文章

网友评论

      本文标题:Easyswoole 对列的基本使用

      本文链接:https://www.haomeiwen.com/subject/xshdzhtx.html