uafrica / delayed-jobs
一个 CakePHP 插件,用于管理并处理具有优先级和重试的背景任务
此包的规范存储库似乎已消失,因此该包已被冻结
v10.3.0
2021-03-29 10:51 UTC
Requires
- php: ^7.2
- cakephp/cakephp: ^4.0.2
- cakephp/migrations: ^3.0@beta
- php-amqplib/php-amqplib: ^2.11.0
Requires (Dev)
- cakephp/app: ^4.0
- cakephp/cakephp-codesniffer: ^4.0
- cakephp/debug_kit: ^4.0
- dereuromark/cakephp-ide-helper: ^1.0
- phpstan/phpstan: ^0.12.0
- phpunit/phpunit: ^8.5
Suggests
- dereuromark/cakephp-ide-helper: For maximum IDE support, especially around enqueue() usage.
- lampager/lampager-cakephp: To support paged archiving
- dev-master
- v10.3.0
- v10.2.0
- v10.1.3
- v10.1.2
- v10.1.1
- v10.1.0
- v10.0.3
- v10.0.2
- v10.0.1
- v10.0.0
- v9.1.1
- v9.1.0
- v9.0.4
- v9.0.3
- v9.0.2
- v9.0.1
- v9.0.0
- v8.0.0
- v7.5.1
- v7.5.0
- v7.4.2
- v7.4.1
- v7.4.0
- v7.3.2
- v7.3.1
- v7.3.0
- v7.2.2
- v7.2.1
- v7.2.0
- v7.1.0
- v7.0.3
- v7.0.2
- v7.0.1
- v7.0.0
- v6.7.0
- v6.6.0
- v6.5.2
- v6.5.1
- v6.5.0
- v6.4.8
- v6.4.7
- v6.4.6
- v6.4.5
- v6.4.4
- v6.4.3
- v6.4.2
- v6.4.1
- v6.4.0
- v6.3.7
- v6.3.6
- v6.3.5
- v6.3.4
- v6.3.3
- v6.3.2
- v6.3.1
- v6.3.0
- v6.2.2
- v6.2.1
- v6.2.0
- v6.1.4
- v6.1.3
- v6.1.2
- v6.1.1
- v6.1.0
- v6.0.7
- v6.0.6
- v6.0.5
- v6.0.4
- v6.0.3
- v6.0.2
- v6.0.1
- v6.0.0
- v5.4.2
- v5.4.1
- v5.4.0
- v5.3.3
- v5.3.2
- v5.3.1
- v5.3.0
- v5.2.1
- v5.2.0
- v5.1.1
- v5.1.0
- 5.0.x-dev
- v5.0.13
- v5.0.12
- v5.0.11
- v5.0.10
- v5.0.9
- v5.0.8
- v5.0.7
- v5.0.6
- v5.0.5
- v5.0.4
- v5.0.3
- v5.0.2
- v5.0.1
- v5.0.0
- v4.1.2
- v4.1.1
- v4.1.0
- v4.0.12
- v4.0.11
- v4.0.10
- v4.0.9
- v4.0.8
- v4.0.7
- v4.0.6
- v4.0.5
- v4.0.4
- v4.0.3
- v4.0.2
- v4.0.1
- v4.0.0
- v3.0.13
- v3.0.12
- v3.0.11
- v3.0.10
- v3.0.9
- v3.0.8
- v3.0.7
- v3.0.6
- v3.0.5
- v3.0.4
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- dev-dependabot/composer/phpstan/phpstan-tw-1.9.14
- dev-dependabot/composer/cakephp/cakephp-codesniffer-tw-5.0
- dev-dependabot/composer/php-amqplib/php-amqplib-tw-3.4.0
- dev-dependabot/composer/phpunit/phpunit-tw-9.5
- dev-dependabot/composer/php-amqplib/php-amqplib-tw-3.0.0
- dev-batch-processing
- dev-code-clean
- dev-archive-table
- dev-dashboard
- dev-experimental-worker-host
- dev-rollback
This package is auto-updated.
Last update: 2024-08-20 06:21:30 UTC
README
此延迟任务模块由 Jaco Roux 为 uAfrica 电子商务平台构建。
一个插件,允许您加载具有异步处理的优先级任务。这是一个可扩展的插件,可以在多个应用服务器上执行以分发负载。它使用数据库和 RabbitMQ 服务器组合来管理任务队列。
要求
- PHP 7.2+
- CakePHP 4.0+
- 由 CakePHP 支持的数据库
- 具有 延迟消息交换插件 的 RabbitMQ 实例
安装
- 使用 composer 需要插件
$ composer require uafrica/delayed-jobs
。 - 通过运行
bin/cake plugin load DelayedJobs
加载插件 - 通过运行
bin/cake migrations migrate --plugin DelayedJobs
设置数据库
运行工作器
要运行单个工作器,请运行 bin/cake worker -v
。要运行多个工作器,请运行 bin/cake watchdog --workers x
(其中 x 是要运行的数目)
建议使用类似 SupervisorD 的工具来运行多个工作器。
入队任务
$job = new \DelayedJob\DelayedJob\Job(); $job->setWorker('RunJob') //References a \App\Worker\RunJobWorker class ->setPayload($payload) //An array of payload data ->setRunAt(new Time('+1 hour')) //Run this job in an hour ->setPriority('10'); //Priority of 10 \DelayedJob\DelayedJob\JobManager::instance() ->enqueue($job);
或者,您可以使用 \DelayedJob\DelayedJob\EnqueueTrait
,它提供了 enqeue($worker, $payload, $options)
方法。
创建工作器
简单地在 Worker
命名空间中创建一个类,实现 \DelayedJob\Worker\JobWorkerInterface
。
例如
namespace DelayedJobs\Worker; use DelayedJobs\DelayedJob\Job; use DelayedJobs\Result\Success; /** * Class TestWorker */ class TestWorker implements JobWorkerInterface { /** * @param \DelayedJobs\DelayedJob\Job $job The job that is being run. * @return bool */ public function __invoke(Job $job) { return new Success('We ran!') } }