gendoria / command-queue-rabbitmq-bundle
Gendoria 命令队列的 RabbitMQ 驱动包
Requires
- php: >=5.5.0
- gendoria/command-queue: ~0.2.0
- gendoria/command-queue-bundle: ~0.2.0
- php-amqplib/rabbitmq-bundle: ~1.6
- psr/log: ~1.0
- symfony/console: ~2.7|~3.0
- symfony/dependency-injection: ~2.7|~3.0
- symfony/framework-bundle: ~2.7|~3.0
- symfony/monolog-bundle: ~2.4
- symfony/yaml: ~2.7|~3.0
Requires (Dev)
- doctrine/orm: ~2.2,>=2.2.3
- symfony/phpunit-bridge: >=2.7.0
This package is auto-updated.
Last update: 2024-08-27 04:21:55 UTC
README
RabbitMQ 驱动包用于 gendoria/command-queue-bundle
.
此包与 Isobar Poland 合作创建。
安装
步骤 0: 准备工作
⚠️ 在使用此包之前,您应安装和配置 gendoria/command-queue-bundle
和 php-amqplib/rabbitmq-bundle
.
对于 RabbitMQ 包,您只需要配置 'connections' 部分。所有必需的生产者和消费者都将由此包自动创建。
步骤 1: 下载包
打开命令行,进入您的项目目录,并执行以下命令以下载此包的最新稳定版本
$ composer require gendoria/command-queue-rabbitmq-bundle "~0.2.0"
此命令要求您全局安装 Composer,如 Composer 文档中的 安装章节 中所述。
步骤 2: 启用包
然后,通过将其添加到项目中 app/AppKernel.php
文件中注册的包列表中来启用包
<?php // app/AppKernel.php // ... class AppKernel extends Kernel { public function registerBundles() { $bundles = array( // ... new Gendoria\CommandQueueRabbitMqDriverBundle\GendoriaCommandQueueRabbitMqDriverBundle(), ); // ... } // ... }
Gendoria 命令队列包 和 php-amqplib/rabbitmq-bundle
包也应启用并配置。
添加包配置
示例包配置如下所示。
gendoria_command_queue_rabbit_mq_driver: serializer: '@gendoria_command_queue.serializer.jms' drivers: poolname: rabbitmq_connection: default exchange_name: poolname-command-queue-bus consumer_name: poolname_command_queue_worker consumer_queue_name: poolname-command-queue-worker-consumer producer_name: poolname_command_queue
serializer
参数用于指定驱动程序使用的序列化驱动程序。您应在这里使用 jms
或 symfony
驱动程序,其中 jms
是首选。
一些序列化驱动程序由 Gendoria 命令队列包 提供。
drivers
键定义 RabbitMQ 命令队列驱动程序。然后它们可以作为池驱动程序由 Gendoria 命令队列包使用。对于每个使用 RabbitMQ 传输的命令队列池,应定义一个驱动程序。
驱动程序配置由几个字段组成,描述连接和工作员详细信息。一个驱动程序条目具有以下键
rabbitmq_connection
- 连接名称,如 rabbitmq 包配置中定义。exchange_name
- RabbitMQ 的交换机名称。consumer_name
- RabbitMQ 包的消费者名称。consumer_queue_name
- RabbitMQ 的队列名称。producer_name
- RabbitMQ 包的生产者名称。
此包将适当的消费者和生产者追加到 php-amqplib/rabbitmq-bundle
,因此不需要额外的消费者 / 生产者配置。
对于每个定义的驱动程序,将创建服务 gendoria_command_queue_rabbit_mq_driver.driver.driverName
,其中 driverName
是驱动程序配置中的键。因此,对于上述配置,将存在一个具有 ID gendoria_command_queue_rabbit_mq_driver.driver.poolname
的服务。
步骤 4: 将驱动程序添加到命令队列包配置
对于您想要在命令队列池中使用 rabbitmq 驱动的每个命令队列池,您应将其设置为 send_driver。
因此,对于 gendoria_command_queue_rabbit_mq_driver.driver.poolname
,您的配置应类似于以下代码。
gendoria_command_queue: ... pools: ... poolname: send_driver: '@gendoria_command_queue_rabbit_mq_driver.driver.poolname'
步骤 5: 设置 RabbitMQ fabric
此步骤由 php-amqplib/rabbitmq-bundle
命令执行。
$ app/console rabbitmq:setup-fabric
如果您在开始向队列发送命令之前启动消费者,则此步骤是可选的。
使用方法
要开始接收您池的命令,您必须启动一个 rabbitmq 包工作进程。
执行此操作的命令是
$ app/console cmq:worker:run rmq.poolname
其中 poolname
是您在配置文件中 pools
部分定义的池名称。
对于第3步的配置,它看起来会是这样
$ app/console cmq:worker:run poolname
您应该使用类似 supervisord 的服务来控制您的工作进程的运行和重启。