mouf utils.task.rabbitmq
此包用于在 RabbitMq 中管理任务。它提供了创建和消费 RabbitMq 任务的类。
Requires
- php: >=5.3.0
- container-interop/service-provider: ~0.3.0
- guzzlehttp/guzzle: ~6.0@dev
- league/tactician: ^1.0
- mouf/utils.console: ~1.0
- php-amqplib/php-amqplib: 2.6.*
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”数组。