slm / queue-amq
与Active MQ排队系统集成的Zend Framework 2模块
Requires
- php: >=5.4.0
- fusesource/stomp-php: ~2.1
- slm/queue: 0.4.*
- zendframework/zend-mvc: ~2.2
- zendframework/zend-servicemanager: ~2.2
- zendframework/zend-stdlib: ~2.2
Requires (Dev)
- phpunit/phpunit: ~4.1
- squizlabs/php_codesniffer: 1.5.*
- zendframework/zendframework: ~2.2
This package is auto-updated.
Last update: 2022-02-01 13:52:23 UTC
README
由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=]
队列是一个必填参数,而超时是一个可选标志,用于指定在返回之前,调用将等待多长时间(以秒为单位)等待队列中到达作业(因为如果没有作业到来,脚本可能会永远等待)。