daycry/queues

Codeigniter 4 的队列

v2.0.13 2024-08-13 10:37 UTC

README

Donate

Codeigniter 4 的队列

使用 beanstalk、redis、sync 及服务总线(azure)队列的 Codeigniter 4

Build status Coverage status Downloads GitHub release (latest by date) GitHub stars GitHub license

通过 composer 安装

使用 composer install 命令使用此包

> composer require daycry/queues

配置

运行命令

> php spark queues:publish

此命令将配置文件复制到您的应用程序命名空间中。然后您可以根据需要调整它。默认情况下,文件将位于 app/Config/Queue.php

允许的任务

使用作业类

URL

use Daycry\Queues\Job;

$job = new Job();
$job = $job->setQueue('default')
    ->url('https://httpbin.org/post', [
            'verify' => false,
            'method' => 'post',
            'body' => ['param1' => 'p1'],
            'dataType' => 'json',
            'headers' => [
                'X-API-KEY' => '1234'
            ]
        )
    ->enqueue();

COMMAND

use Daycry\Queues\Job;

$job = new Job();
$job = $job->command('foo:bar')->enqueue('default');

CLASSES

use Daycry\Queues\Job;

$job = new Job();
$job->classes(\Tests\Support\Classes\Example::class, 'run', ['constructor' => 'Contructor', 'method' => ['param1' => 1, 'param2' => 2]])->enqueue('default');

您可以在第三个参数中传递选项,该参数包含构造函数和方法中的参数。

SHELL

use Daycry\Queues\Job;

$job = new Job();
$job->shell('ls')->enqueue('default');

作业计划

$dateTimeObj= new DateTime('now');
$dateTimeObj->add(new DateInterval("PT1H"));

$job = new Job();
$job->shell('ls');
$job->scheduled($dateTimeObj);
$result = $job->enqueue('default');

作业回调

您可以使用 'URL' 类型配置回调。

$job->setCallback('https://httpbin.org/post', ['method' => 'post', 'headers' =>['X-API-KEY' => '1234']]);

自定义方法

Beanstalk 和服务总线有自定义方法

BEANSTALK

use Daycry\Queues\Job;

$job = new Job();
$job->shell('ls')->setPriority(10)->setTtr(3600)->enqueue('default');

SERVICE BUS

use Daycry\Queues\Job;

$job = new Job();
$job->shell('ls')->setLabel('label')->enqueue('default');

使用工作器

> cd /path-to-your-project && php spark queues:worker default

默认情况下是队列的名称。

如果您只想执行一次工作器,可以这样做

> cd /path-to-your-project && php spark queues:worker default --oneTime

为了使用这些函数,类必须被扩展。

您可以为自定义早期和后期方法扩展工作器命令。

use Daycry\Queues\Job;

$this->earlyChecks(Job $j);

//job execution

$this->lateChecks($j);

$this->earlyCallbackChecks(Job $j);

//callback execution

$this->lateCallbackChecks($j);