Yii simple queue worker
Yii2 extension to provide SQL based queue worker, (*1)
Installation
The preferred way to install this extension is through composer., (*2)
Either run, (*3)
php composer.phar require --prefer-dist macklus/yii2-simple-queue "*"
or add, (*4)
"macklus/yii2-simple-queue": "*"
to the require section of your composer.json
file., (*5)
Configuration
Once the extension is installed, configure it define queue component :, (*6)
'queue' => [
'class' => 'macklus\SimpleQueue\SimpleQueue',
'connection' => 'db',
'table' => 'simpleQueue',
'persistent' => true,
'duplicate_jobs' => false,
],
Optional vars are:, (*7)
- connection: Database connection
- table: Name of database table
- persistent: If true, no jobs will be delete from database, marked as ENDED as well
- duplicate_jobs: Search before insert new job to detect similar one exists
Usage
Once the extension is configured, simply use it to put a job on a queue:, (*8)
Yii::$app->queue->putInTube($queue, [array_of_vars_of_job]);
Controller
You need a controller to get (and process) all jobs. In example:, (*9)
<?php
namespace app\commands;
use macklus\SimpleQueue\SimpleQueueController;
class SqController extends SimpleQueueController
{
const DELAY_PRIORITY = 1000; //Default priority
const DELAY_TIME = 60; //Default delay time
const DELAY_MAX = 3;
public function listenTubes()
{
return ['test'];
}
public function actionTest($job)
{
$jobData = $job->getData();
// do some stuff
return self::DELETE;
}
}