slm/queue-amq

该软件包已被废弃且不再维护。没有建议替代软件包。

与Active MQ排队系统集成的Zend Framework 2模块

v0.1.0 2015-05-31 15:30 UTC

This package is auto-updated.

Last update: 2022-02-01 13:52:23 UTC


README

Build Status PHP 7 ready Code Coverage Latest Stable Version Latest Unstable Version Scrutinizer Code Quality Dependency Status

由Jurian Sluiman创建

要求

安装

首先,安装SlmQueue(说明在此)。然后,将以下行添加到您的composer.json文件中

"require": {
    "slm/queue-amq": "0.4.*"
}

然后,通过在您的application.config.php文件中添加SlmQueueAmq来启用模块。您可能还想配置模块:只需将slm_queue_amq.local.php.dist(您可以在SlmQueueAmq的config文件夹中找到此文件)复制到您的config/autoload文件夹中,并覆盖您想要的设置。

文档

在阅读SlmQueueAmq文档之前,请先阅读SlmQueue文档

(别忘了首先安装Active MQ,并在服务器上运行守护程序)

设置连接参数

slm_queue_amq.local.php.dist文件复制到您的config/autoload文件夹,并按照说明操作。

添加队列

Active MQ实现SlmQueue接口的实体类包含在SlmQueueAmq\Queue\AmqQueue中,并提供了一个工厂来创建队列。因此,如果您想有一个名为“email”的队列,只需在您的module.config.php文件中添加以下行

return array(
    'slm_queue' => array(
        'queue_manager' => array(
            'factories' => array(
                'email' => 'SlmQueueAmq\Factory\AmqQueueFactory'
            )
        )
    )
);

此队列可以通过QueuePluginManager类检索。

队列操作

push

有效选项是SlmQueueAmq\Queue\AmqQueueInterface接口上的所有常量

  • AmqQueueInterface::DELAY:在任务变为可弹出的之前延迟的毫秒数(默认为无延迟)
  • AmqQueueInterface::PERIOD:在毫秒中,一个任务在返回队列之前可以运行多长时间
  • AmqQueueInterface::REPEAT:任务应重复可用的次数(默认为1,无重复任务)
  • AmqQueueInterface::CRON:用于通过cron安排任务的CRON字符串
  • AmqQueueInterface::PERSIST:设置为true以发送持久消息

示例

use SlmQueueAmq\Queue\AmqQueueInterface as Amq;

$queue->push($job, array(
    Amq::CRON     => '0 * * * *',
    Amq::DELAY    => 1000,
    Amq::PERIOD   => 1000,
    Amq::REPEAT   => 9
));

上述代码将交付任务10次,每次任务之间延迟一秒,并且这每小时发生一次。有关选项的更多解释,请参阅Active MQ手册

pop

有效选项是

  • 超时:默认情况下,当我们请求一个任务时,它将阻塞直到找到任务(如果新任务永远不会到来,可能永远都不会找到)。如果您设置超时(以秒为单位),即使没有找到任务,超时后它也会返回

执行任务

SlmQueueAmq提供了一个命令行工具,可以用来弹出并执行作业。您可以在您的Zend Framework 2应用的公共文件夹中输入以下命令:

php index.php queue amq <队列名> [--timeout=]

队列是一个必填参数,而超时是一个可选标志,用于指定在返回之前,调用将等待多长时间(以秒为单位)等待队列中到达作业(因为如果没有作业到来,脚本可能会永远等待)。