WorkerCommandBundle
Integrates Pheanstalk and endless commands to allow easy creation of custom daemonizable beanstalk workers., (*1)
Install
Add "vivait/worker-command-bundle": "dev-master" to your composer.json and run composer update, (*2)
Update your AppKernel:, (*3)
public function registerBundles()
{
$bundles = array(
...
new Vivait\WorkerCommandBundle\VivaitWorkerCommandBundle(),
new Leezy\PheanstalkBundle\LeezyPheanstalkBundle(),
}
Configure LeezyPheanstalkBundle., (*4)
Basic Usage
Simply extend Vivait\WorkerCommandBundle\Command\WorkerCommand and implement its abstract methods., (*5)
class EmailWorkerCommand extends WorkerCommand
{
protected function performAction($payload, InputInterface $input, OutputInterface $output)
{
$output->writeln($payload);
}
protected function setCommandNamespace()
{
return "vivait:queue:worker:email";
}
}
Do some work
The performAction() method will be called whenever a new job is available. This method should be used to perform the
worker's task., (*6)
Set the name of the command using setCommandNamespace()., (*7)
Running the command
As long as this class resides in your application's Command directory, Symfony should autodetect it. Run php app/console
to see a list of available commands., (*8)
To run the command defined in the above class, run php app/console vivait:queue:worker:email in your terminal., (*9)
Arguments
The command above must be provided with the tube argument, for example, php app/console vivait:queue:worker:email "vivait.myapp.email", (*10)
Optionally, an ignore argument can be set to specify an ignored tube., (*11)
Options
--timeout will set the interval between running the command, with a default setting of 5 seconds., (*12)
E.g. php app/console vivait:queue:worker:email -t 0.5, (*13)
Exception handling
WorkerCommand catches any \Exception. Internally, WorkerCommand prints the error message and code to the console, but
by implementing handleException(), it's possible to further interact with the exception., (*14)