gendoria / command-queue-doctrine-bundle
为 Gendoria 命令队列提供的 Doctrine 驱动
Requires
- php: >=5.5.0
- doctrine/doctrine-bundle: ~1.2
- gendoria/command-queue: ~0.2.0
- gendoria/command-queue-bundle: ~0.2.0
- symfony/framework-bundle: ~2.7|~3.0
Requires (Dev)
- phpunit/dbunit: ^2.0
- phpunit/phpunit: >=4.8.0
- symfony/phpunit-bridge: >=2.7.0
This package is auto-updated.
Last update: 2024-08-27 04:24:47 UTC
README
用于 gendoria/command-queue-bundle
的 Doctrine 驱动包。
与 Isobar Poland 合作创建的包。
安装
步骤 0:先决条件
⚠️ 在使用此包之前,您应安装和配置 gendoria/command-queue-bundle
和 doctrine/doctrine-bundle
。
步骤 1:下载包
打开命令行控制台,进入您的项目目录,并执行以下命令以下载此包的最新稳定版本
$ composer require gendoria/command-queue-doctrine-bundle "dev-master"
此命令要求您全局安装了 Composer,如 Composer 文档中的 安装章节 中所述。
步骤 2:启用包
然后,通过将其添加到项目中的 app/AppKernel.php
文件中注册的包列表中来启用包
<?php // app/AppKernel.php // ... class AppKernel extends Kernel { public function registerBundles() { $bundles = array( // ... new Gendoria\CommandQueueDoctrineDriverBundle\GendoriaCommandQueueDoctrineDriverBundle(), ); // ... } // ... }
还应启用并配置 Gendoria 命令队列包。
步骤 3:添加包配置
示例包配置如下所示。
gendoria_command_queue_doctrine_driver: drivers: poolname: serializer: '@gendoria_command_queue.serializer.jms' doctrine_connection: default
在 drivers
部分的 poolname
键可以是任何有效的字符串。它允许为命令路由创建单独的驱动器 '池'。
serializer
参数用于指定驱动器使用的序列化驱动程序。在这里,您应使用 jms
或 symfony
驱动程序,其中 jms
是首选。
一些序列化驱动程序由 Gendoria 命令队列包 提供。
步骤 4:将驱动器添加到命令队列包配置
对于每个您想使用 rabbitmq 驱动程序的命令队列池,您应将其设置为 send_driver。
因此,对于 gendoria_command_queue_doctrine_driver.driver.poolname
,您的配置应类似于以下代码。
gendoria_command_queue: ... pools: ... poolname: send_driver: '@gendoria_command_queue_doctrine_driver.driver.poolname'
步骤 5:创建数据库模式
此包提供 Symfony 命令以创建适当的数据库模式。要运行它,请输入
Symfony 2.x
$ app/console cmq:doctrine:schema-create
Symfony 3.x
$ bin/console cmq:doctrine:schema-create
此命令将检查您的数据库连接和队列表的配置。如果数据库中缺少任何表,它将尝试创建它。该命令不会更改现有表,因此可以安全地多次运行它。
另一方面,它目前不会检查数据库中的模式更改并更新它们。
用法
要开始接收池的命令,您必须启动一个 rabbitmq 包工作进程。
执行此操作的命令如下
Symfony 2.x
$ app/console cmq:worker:run doctrine.poolname
Symfony 3.x
$ bin/console cmq:worker:run doctrine.poolname
其中 poolname
是您在配置的 pools
部分中定义的池名称。
您应使用像 supervisord 这样的服务来控制您的工作进程的运行和重启。