mcfedr/doctrine-delay-queue-driver-bundle

此包已废弃,不再维护。作者建议使用 mcfedr/queue-manager-bundle 包。

一个用于使用 doctrine 作为驱动运行 symfony 背景任务的包

3.9.0 2018-11-08 12:55 UTC

README

一个用于 Queue Manager Bundle 的驱动,使用 Doctrine 存储延迟任务

此驱动不运行任务,它需要一个其他驱动来实际处理任务。

它目前 支持 MySQL,因为它需要原生查询以并发安全的方式查找任务。

Latest Stable Version License Build Status

使用方法

除了您正在使用的任何其他守护进程外,您还应运行延迟守护进程。此运行器只是将 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 方法的选项

注意

如果 delaytime 选项小于 30 秒,则作业将安排为立即执行

安装后,您需要执行模式更新,以便创建延迟任务表