mcfedr / doctrine-delay-queue-driver-bundle
3.9.0
2018-11-08 12:55 UTC
Requires
- php: >=5.5
- doctrine/doctrine-bundle: ^1.6
- doctrine/orm: ^2.5
- mcfedr/queue-manager-bundle: ^5.6.1
- symfony/framework-bundle: ^3.0|^4.0
- symfony/proxy-manager-bridge: ^3.3|^4.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.1
- incenteev/composer-parameter-handler: ^2.1
- mcfedr/sqs-queue-driver-bundle: ^3.4.2
- phpunit/phpunit: ^4.0|^5.3
- symfony/browser-kit: ^3.0|^4.0
- symfony/monolog-bundle: ^3.0|^4.0
README
一个用于 Queue Manager Bundle 的驱动,使用 Doctrine 存储延迟任务
此驱动不运行任务,它需要一个其他驱动来实际处理任务。
它目前 仅 支持 MySQL,因为它需要原生查询以并发安全的方式查找任务。
使用方法
除了您正在使用的任何其他守护进程外,您还应运行延迟守护进程。此运行器只是将 Doctrine 中的任务移动到您的其他作业队列中。因为它通常工作量不大,所以单个实例可以处理大量作业。
./bin/console mcfedr:queue:{name}-runner
其中 {name}
是您在配置中使用的名称。添加 -v
或更多以获取详细日志。
安装
Composer
composer require mcfedr/doctrine-delay-queue-driver-bundle
AppKernel
在您的 AppKernel 中包含此包
public function registerBundles()
{
$bundles = [
...
new Mcfedr\QueueManagerBundle\McfedrQueueManagerBundle(),
new Mcfedr\DoctrineDelayQueueDriverBundle\McfedrDoctrineDelayQueueDriverBundle(),
配置
安装此包后,您可以设置类似以下的队列管理器配置
mcfedr_queue_manager:
managers:
delay:
driver: doctrine_delay
options:
entity_manager: default
default_manager: default
default_manager_options: []
这将创建一个名为 QueueManager
的服务,名为 "mcfedr_queue_manager.delay"
entity_manager
- 要使用的 Doctrine 实体管理器default_manager
- 默认作业处理器default_manager_options
- 传递给作业处理器的默认选项put
传递给 QueueManager::put
的选项
time
- 一个表示何时安排此任务的\DateTime
对象delay
- 从现在开始安排此任务的时间(秒数)manager
- 使用不同的作业处理器为此任务manager_options
- 传递给处理器的put
方法的选项
注意
如果 delay
或 time
选项小于 30 秒,则作业将安排为立即执行
表
安装后,您需要执行模式更新,以便创建延迟任务表