The Wayback Machine - http://web.archive.org/web/20201027080138/https://github.com/uafrica/delayed-jobs
Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
src
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Delayed Jobs

This delayed Jobs module was built by Jaco Roux for the uAfrica eCommerce Platform.

A plugin that allows you to load priority tasks for async processing. This is a scalable plugin that can be executed on multiple application servers to distribute the load. It uses a combination of a database and a RabbitMQ server to manage the job queue.

Requirements

Installation

  1. Require the plugin with composer $ composer require uafrica/delayed-jobs.
  2. Load the plugin by running bin/cake plugin load DelayedJobs
  3. Setup the database by running bin/cake migrations migrate --plugin DelayedJobs

Running a worker

To run a single worker, run bin/cake worker -v. To run multiple workers, run bin/cake watchdog --workers x (Where x is the number to run)

It is recommended to use something like SupervisorD to run multiple workers.

Enqueuing a job

    $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);

Alternatively, you can use the \DelayedJob\DelayedJob\EnqueueTrait which gives an enqeue($worker, $payload, $options) method.

Creating a worker

Simply create a class in the Worker namespace that implements the \DelayedJob\Worker\JobWorkerInterface

For example

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!')
    }
}

About

A CakePHP Plugin to manage and process background jobs with priority and retries

Topics

Resources

License

Packages

No packages published

Languages

You can’t perform that action at this time.