studiobonito / silverstripe-queue
Simple multi driver queue system.
Installs: 139
Dependents: 0
Suggesters: 0
Security: 0
Stars: 7
Watchers: 4
Forks: 1
Open Issues: 3
Type:silverstripe-module
Requires (Dev)
- mockery/mockery: ~0.9.0
- pda/pheanstalk: ~2.1
- phpunit/phpunit: ~3.7.0
- silverstripe/framework: ~3.1.2
- symfony/class-loader: ~2.3
Suggests
- pda/pheanstalk: Allows use of the Beanstalkd driver
This package is not auto-updated.
Last update: 2024-11-05 02:37:13 UTC
README
Overview
Simple multi driver queue system. This is essentially a port of the Laravel queue system.
Still very much a WIP not for use in production!
Although it would be better to use illuminate/queue
directly it has too many dependancies that would replicate silverstripe/framework
functionality at this time. By porting the code we can take advantage of SilverStripes command line framework and dependancy injection whilst still having a feature rich and multi backend queue system.
So our thanks go to Taylor Otwell et al for their excellent work on Laravel.
Requirements
- SilverStripe 3.1 or newer.
pda/pheanstalk
2.1 or newer for Beanstalkd support
Supported Backends
- Synchronous
- SilverStripe Database
- Beanstalkd
- IronMQ
- Amazon SQS
- Redis
Installation Instructions
Composer
Run the following to add this module as a requirement and install it via composer.
$ composer require studiobonito/silverstripe-queue
Manual
Copy the 'queue' folder to your the root of your SilverStripe installation.
Configuration Overview
Configure the queue drivers with the following YAML.
StudioBonito\SilverStripe\Queue\QueueManager: default: 'db' db: driver: 'db' queue: 'default' beanstalkd: driver: 'beanstalkd' host: 'localhost' queue: 'default' ttr: 60
Usage Overview
Import QueueManager
Import the QueueManager
class for ease of use.
use StudioBonito\SilverStripe\Queue\QueueManager;
Push A Job Onto The Queue
Use QueueManager::inst()
to get an instance of the QueueManger
class and then call the push()
method passing in the name of a job handler and an array of data.
QueueManager::inst()->push('SendEmail', array('message' => $message));
Creating A Job Handler
Job handlers are simple classes that contain a run
method with $job
and $data
parameters.
class SendEmail { public function run($job, $data) { // Code for processing job goes here. } }
Contributing
Unit Testing
$ composer install --prefer-dist --dev $ phpunit
License
All original work copyright of Taylor Otwell under MIT license. All subsequent work copyright Studio Bonito Ltd. under BSD-2-Clause license.