yii2 使用redis queue

在fec插件中已经实现queue

fec插件:https://github.com/fancyecommerce/yii2-fec

在使用之前,您需要先进行配置如下(注意,添加到console中):

'components' => [
      'queue' => [
          'class' => 'fec\component\RedisQueue',
      ],
  ],
  
  'controllerMap' => [
      'queue' => 'fec\component\redisqueue\QueueController'
  ],

使用方法:

1.首先建立一个Job类,实现run方法:

譬如:\fec\component\redisqueue\TestJob

<?php
namespace fec\component\redisqueue;

class TestJob
{
    public function run($job, $data)
    {
        //process $data;
        var_dump($data);
    }
}

2. 执行命令行,设置监听,监听到任务,就执行。

这里一般是多台主机,一起过来拿任务,因此这里一般是多台主机,配置的都是同一个redis。从redis过来拿数据。

主机1:

./yii queue/listen MyTestQueue

主机2:

./yii queue/listen MyTestQueue

3. 往序列里面添加任务:

$job = '\fec\component\redisqueue\TestJob';  #任务类,实现了run方法
$data = ['a', 'b', 'c'];   # 参数
$queue  = 'MyTestQueue';   # queueName,这里和命令行哪里的名字对应
CRedisQuery::push($job,$data,$queue);  # 开始加任务。

执行后,可以看到命令行处,有刚才添加的任务。