sholokhov / bitrix-broker
队列处理
v0.1
2023-10-31 17:04 UTC
Requires
- php: >=8.1
- psr/log: ^2|^3
Requires (Dev)
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2023-11-01 00:46:27 UTC
README
模块用于组织在指定队列中执行任务。建议使用cron任务来执行任务。
任务处理器实现的简单示例
namespace Task\Queue\Fakes; use Bitrix\Main\Result; use Task\Queue\Service\Traits\Dispatchable; use Task\Queue\Interfaces\Bus\IShouldQueue; class FakeTask implements IShouldQueue { use Dispatchable; protected array $arguments; public function __construct(...$arguments) { $this->arguments = $arguments; } public function handle(): Result { return new Result(); } }
每个任务处理器都必须返回一个包含结果的对象,如果数据类型不正确,任务将被移动到失败任务列表。
new \Bitrix\Main\Result
创建新任务的示例
基于实现 Task\Queue\Interfaces\Bus\IShouldQueue 接口并使用 Task\Queue\Service\Traits\Dispatchable 扩展的对象创建新任务。
use Task\Queue\Fakes\FakeTask; FakeTask::dispatch(55, 'TestName');
通过包装器添加任务
use Task\Queue\ORM\JobsTable; use Task\Queue\Service\QueueManager; use Task\Queue\Service\DTO\ORM\Job; use Task\Queue\Fakes\Tasks\FakeCustomTask; $job = (new Job())->setTask(FakeCustomTask::class) ->setParameters([55, 'TestName']); $manager = new QueueManager(new JobsTable()); $manager->push($job);
通过ORM添加
use Task\Queue\ORM\JobsTable; use Task\Queue\Service\DTO\ORM\Job; use Task\Queue\Fakes\Tasks\FakeCustomTask; $job = (new Job())->setTask(FakeCustomTask::class) ->setParameters([55, 'TestName']); JobsTable::append($job);
任务处理器启动机制可以采用以下调用方式
在Task中传递一个实现 Task\Queue\Interfaces\Bus\IShouldQueue 抽象类的类名
Task\Queue\Fakes\FakeTask
在Task中也可以传递一个不实现 Task\Queue\Interfaces\Bus\IShouldQueue 抽象类的类名。在这种情况下,将尝试声明类并调用 handle 函数。如果所有尝试均未成功,则任务将被发送到错误任务列表。
Task\Queue\Fakes\Tasks\FakeCustomTask
在Task中还可以传递将被调用的静态函数的调用。
Task\Queue\Fakes\Tasks\FakeCustomTask::staticHandler