This project has been discontinued.
We have discontinued active development and support on this project and would encourage you to seek alternative ways to implement a queue in a Symfony project. You might want to take a look at the leezy/pheanstalk-bundle
NB This bundle should be considered at "early-release" stage. Much of the code has been used in production environments, but the bundle in its current form has not been subject to such rigorous real-world usage.
// composer.json
"repositories": [
{
"type": "vcs",
"url": "http://github.com/whiteoctober/QueueBundle"
}
],
"require": {
"whiteoctober/queue-bundle": "version-here"
},
// app/AppKernel.php
public function registerBundles()
{
$bundles = array(
// Your other bundles here
new WhiteOctober\QueueBundle\WhiteOctoberQueueBundle(),
);
return $bundles;
}
If you're using Doctrine Migrations Bundle, you can tell Doctrine to generate migrations for the QueueEntry entity in the usual way: app/console doctrine:migrations:diff
.
If you want to be emailed when queue entries fail, add the following to your parameters.yml
:
task_errors_to: [email protected]
emailsFromEmail: [email protected]
For creating a QueueEntry
, use the QueueService
. For example:
/** @var $queueService WhiteOctober\QueueBundle\Service\QueueService */
$queueService = $this->get('whiteoctober_queue');
$queueService->create('entry type', 'entry data');
Add something like this to your services.yml:
userCommand.queue.processor:
class: MyProject\SomeBundle\QueueProcessor\AnExcitingProcessor
arguments:
- [@arguments.like.any.other.service]
tags:
- { name: whiteoctober.queue.processor}
The important bit here is the tags
section. Note also that your processor class (AnExcitingProcessor
in the example above) should implement QueueProcessorInterface
.
Run the process queue command:
app/console whiteoctober:queue:process
Note that, by default, an invocation of the command is limited to processing one item from the queue. You'll probably want to run the command regularly from a cron job.
whiteoctober:queue:process
has two options which can be passed in (both optional):
app/console whiteoctober:queue:process --limit=5 --entry-type=thistype
To check for long-running queue jobs, use the command whiteoctober:queue:check-for-long-running
. For example:
app/console whiteoctober:queue:check-for-long-running [email protected] [email protected] 'my proj'
This will send an e-mail to [email protected] from [email protected] about any queue entries which have been in progress for more than 2 hours. In the e-mail, the queue will be identified as being used by the application my proj.