moufutils.task.rabbitmq

此包用于在 RabbitMq 中管理任务。它提供了创建和消费 RabbitMq 任务的类。

1.0.x-dev 2016-06-13 16:19 UTC

This package is auto-updated.

Last update: 2024-09-15 05:02:49 UTC


README

此包用于在 RabbitMq 中管理任务。

安装

composer require thecodingmachine/utils.task.rabbitmq

安装完成后,您需要将 TheCodingMachine\RabbitMQServiceProvider 注册到您的容器中。

如果您的容器支持 Puli 集成,您无需执行任何操作。否则,请参阅您框架或容器的文档,了解如何注册 服务提供者。对于 Mouf,请参阅最后部分。

必需

此包可以在不使用 RabbitMQ 的情况下使用,但所有任务都将在实时执行。要使用 RabbitMq,请在您的环境中安装它。之后,添加 RabbitMQ 管理来计算其中的任务数量。

rabbitmq-plugins enable rabbitmq_management

简介

此服务提供者旨在提供创建任务所需的所有类。

预期值/服务

服务提供者 预期以下配置/服务可用

您可以编辑连接实例以添加错误队列,包括是否启用、最大尝试错误次数和优先级。

提供的服务

服务提供者 提供以下服务

扩展服务

服务提供者 不扩展任何服务。

使用方法

如果您在 "Mouf\Utils\Task\Services\RabbitMQ\Connection" 实例中添加错误队列名称,则可以添加错误队列。

之后,您可以创建您的任务。这非常简单,创建一个新的实例,它扩展到 Mouf\Utils\Task\Task。此类必须可序列化。此类用于获取您的信息,在此示例中用于获取 carId

<?php
namespace MyProject\Tasks;

class GenerateCarTask extends Task
{
    protected $carId;

    /**
     * GenerateCarTask constructor.
     * @param $carId
     */
    public function __construct($carId)
    {
        $this->carId = $carId;
    }

    /**
     * @return mixed
     */
    public function getCarId()
    {
        return $this->carId;
    }
}

将 Task 的相同类改为 Handler。添加一个 handler 函数

<?php
namespace MyProject\Tasks;

class GenerateCarHandler
{
    /**
     * GenerateCarHandler constructor.
     */
    public function __construct()
    {
        /* Your instance if you want */
    }

    /**
     * @param GenerateCarTask $task
     * @return bool
     * @throws \Exception
     */
    public function handle(GenerateCarTask $task)
    {
        $carId = $task->getCarId();

        /* Your code */

        return true;
    }
}

Mouf 安装

Mouf 2.0 不使用提供者。因此,您必须创建每个实例。转到 Mouf 界面,添加常量

  • RABBITMQ_HOST
  • RABBITMQ_PORT
  • RABBITMQ_USER
  • RABBITMQ_PASSWORD
  • RABBITMQ_API_HOST
  • RABBITMQ_API_PORT
  • RABBITMQ_MAINQUEUE
  • RABBITMQ_ERRORQUEUE
  • RABBITMQ_MAXPRIORITY
  • RABBITMQ_MAXTRIES
  • RABBITMQ_ENABLE

在 Mouf 界面中,点击“实例”,“通过 PHP 代码创建新实例”并创建以下元素

完成时,搜索“console”实例(类 Mouf\Console\ConsoleApplication)和“Mouf\Utils\Task\Commands\RabbitMQ\ConsumerCommand”实例到“commands”数组。