gendoria/command-queue-rabbitmq-bundle

Gendoria 命令队列的 RabbitMQ 驱动包

0.2.2 2016-10-24 13:55 UTC

This package is auto-updated.

Last update: 2024-08-27 04:21:55 UTC


README

Build Status Scrutinizer Code Quality Code Coverage Downloads Latest Stable Version

RabbitMQ 驱动包用于 gendoria/command-queue-bundle.

此包与 Isobar Poland 合作创建。

Isobar Poland

安装

步骤 0: 准备工作

⚠️ 在使用此包之前,您应安装和配置 gendoria/command-queue-bundlephp-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 参数用于指定驱动程序使用的序列化驱动程序。您应在这里使用 jmssymfony 驱动程序,其中 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 的服务来控制您的工作进程的运行和重启。