macklus/yii2-simple-queue

Yii2 extension to provide SQL based queue worker

Installs: 2 396

Dependents: 0

Suggesters: 0

Security: 0

Stars: 1

Watchers: 3

Forks: 0

Open Issues: 0

Type:yii2-extension

1.0.2 2016-04-14 18:25 UTC

This package is not auto-updated.

Last update: 2024-11-06 23:47:30 UTC


README

Yii2 extension to provide SQL based queue worker

Installation

The preferred way to install this extension is through composer.

Either run

php composer.phar require --prefer-dist macklus/yii2-simple-queue "*"

or add

"macklus/yii2-simple-queue": "*"

to the require section of your composer.json file.

Configuration

Once the extension is installed, configure it define queue component :

'queue' => [
  'class' => 'macklus\SimpleQueue\SimpleQueue',
  'connection' => 'db',
  'table' => 'simpleQueue',
  'persistent' => true,
  'duplicate_jobs' => false,
],

Optional vars are:

  1. connection: Database connection
  2. table: Name of database table
  3. persistent: If true, no jobs will be delete from database, marked as ENDED as well
  4. 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:

Yii::$app->queue->putInTube($queue, [array_of_vars_of_job]);

Controller

You need a controller to get (and process) all jobs. In example:

<?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;
    }
}