一个基于redis的队列项目,结合了symfony的console组件,采用命令创建队列、执行队列 🇨🇳
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
src
.gitignore
HOWITWORK.md
LICENSE
README.md
artisan
composer.json

README.md

#RedisQueue目录

RedisQueue组件介绍

一个基于redis的队列项目,结合了symfony的console组件,采用命令创建队列、执行队列。 redisQueue是一个流程相对简单(相对那些重量级的MQ),具有以下几个特点

  • 易理解
  • 使用简单
  • 易维护
  • 易扩展
  • 容错机制完善

总而言之,这个队列组件很灵活(有点自吹啊,但是真的很灵活,不骗你),为了方便大家使用,我将这个组件的使用步骤写在这了

redisQueue队列库是基于redis队列实现的一套队列任务处理机制,同时提供了Symfonycommand组件的队列命令.

ResQueue的目录结构

----src
    |---- Config  // 相关配置目录
    |       |---- email.php
    |       |____ queue.php
    |---- Console // 队列相关命令目录
    |       |---- CreateJobCommand.php
    |       |---- ListenCammand.php
    |       |---- ListFailedCammand.php
    |       |---- QueueCammand.php
    |       |____ WorkQueueCammand.php
    |---- Demo // demo目录
    |---- Job  // 任务目录
    |       |____ SendEmailJob.php
    |---- Log  // 队列日志目录
    |---- RedisQueue // 队列组件目录
    |       |---- Extras
    |       |---- RedisSent
    |       |---- ReQueue
    |       |____ ResQueue.php
    |---- Tools     // 第三方组件目录
    |---- vendor    // 组件目录
    |---- artisan   // 执行命令文件
    |____README.md  // RedisQueue组件说明文件

使用前期准备

你需搭建以下几个环境

  • 搭建PHP环境
  • 安装Redis,及Redis的PHP扩展
  • 安装composer包管理工具

使用composer安装以下几个组件

  • symfonyconsole命令组件
  • phpmailer组件

使用symfony/console命令组件运行队列

以下是队列相关运行命令,首先进入到组件的根目录,使用artisan运行相关命令

  • 创建队列命令
  php artisan queue:create
  • 查看失败队列命令
php artisan queue:failed
  • 执行队列命令
php artisan queue:work

## RedisQueue使用步骤

  • 首先要知道怎么使用该组件创建队列,使用如下命令即可创建
    php artisan queue:create

执行上面的创建命令,redisQueue会帮你创建默认的队列任务,默认的任务类为default。每个任务类中都有一个perform的方法, 队列进程主要是执行任务类中的这个方法来完成相应的队列任务。

    // 任务逻辑方法
    public function perform()
    {
        $status = $this->email->sendEmail('测试队列发送邮件', ['liyong@addnewer.com'], 'RedisQueue');

        if(!$status) {
            $this->log->writeLog('发送失败');
            echo false;
        }
    }

如有需要,可以自定义任务名称(即任务类名称)遵守驼峰命名。

该命令有自己的一套默认参数,我们来瞧瞧这个命令的的相关参数吧。

# 这命令有这些参数
queue:create [-j|--job-name JOB-NAME] [-d|--job-describe] [--queue-name] [-rh|--redis-host] [-rp|--redis-port]

job-name : 简写-j,即queue:create --job-name(-j) 队列任务名称,默认值:default
job-describe : 简写-d,即queue:create --job-describe(-d) 队列任务描述,默认值:Describe the function of the queue
queue-name : 即queue:create --queue-name 队列名称,默认值:default
redis-host : 简写-rh,即queue:create --redis-host(-rh) 队列的redis主机配置,默认值:127.0.0.1
redis-port : 简写-rd,即queue:create --redis-port(-rp) 队列的redis的端口配置,默认值:3306

你可以通过命令同时设置以上的参数值,灵活吧。。。执行命令后出现以下结果,说明创建成功了。。

 $ php artisan queue:create
   Create queue job success, the queue job id is "874b751cf13bb89e2959fb7d4935d313"
  • 队列任务创建成功后,怎么去执行了 使用下面命令即可执行刚才的队列任务,这个命令只用一次就可以(指的是同一台机器上),因为它将创建一个常驻内存的进程,前提是不出问题的情况
    php artisan queue:work

该命令的相关参数就少很多了,相比创建命令来说,废话不说了,直接来看看吧

queue:work [--queue-name] [-rh|--redis-host] [-rp|--redis-port]

queue-name : 即queue:work --redis-host(-rh) 队列的名称,默认值:default
redis-host : 简写-rh,即queue:work --redis-host(-rh) 队列的redis主机配置,默认值:127.0.0.1
redis-port : 简写-rd,即queue:work --redis-port(-rp) 队列的redis的端口配置,默认值:3306

如果你创建命令都是设置了相关参数,这个命令的重新设置下,值与创建命令设置的值一样。如果创建命令你是使用默认值,那么这个命令就是要默认值。明白了吗? 执行完命令后会出现以下字样,说明就ok了

 $ php artisan queue:work
    *** Starting worker "bogon:15609:default"
    *** Registered signals
    *** Pruning dead worker: bogon:14118:default
    *** Checking default
    *** Found job on default
    *** Forked 15616 at 2017-02-05 23:03:26
    *** Processing default since 2017-02-05 23:03:26
    *** Checking default
    *** Sleeping for 1
    *** Checking default
    *** Sleeping for 1
    *** Checking default

至此组件的两个基本命令讲解到此为止,还有其他命令的讲解,陆续更新中ing。。。。

在使用该组件过程中如遇到问题请及时与我联系,QQ:626375290,微信:liyong2007.