ly2513/redis-queue

Display page edis-queue

dev-master 2019-05-31 09:04 UTC

This package is not auto-updated.

Last update: 2024-04-28 03:25:12 UTC


README

#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.