vivait / worker-command-bundle
Integrates Pheanstalk and endless commands to allow easy creation of custom workers.
Installs: 2 740
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 7
Forks: 1
pkg:composer/vivait/worker-command-bundle
Requires
- leezy/pheanstalk-bundle: ~2.5
- wrep/daemonizable-command: ~1.2
This package is not auto-updated.
Last update: 2020-01-20 09:03:13 UTC
README
Integrates Pheanstalk and endless commands to allow easy creation of custom daemonizable beanstalk workers.
Install
Add "vivait/worker-command-bundle": "dev-master" to your composer.json and run composer update
Update your AppKernel:
public function registerBundles() { $bundles = array( ... new Vivait\WorkerCommandBundle\VivaitWorkerCommandBundle(), new Leezy\PheanstalkBundle\LeezyPheanstalkBundle(), }
Configure LeezyPheanstalkBundle.
Basic Usage
Simply extend Vivait\WorkerCommandBundle\Command\WorkerCommand and implement its abstract methods.
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.
Set the name of the command using setCommandNamespace().
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.
To run the command defined in the above class, run php app/console vivait:queue:worker:email in your terminal.
Arguments
The command above must be provided with the tube argument, for example, php app/console vivait:queue:worker:email "vivait.myapp.email"
Optionally, an ignore argument can be set to specify an ignored tube.
Options
--timeout will set the interval between running the command, with a default setting of 5 seconds.
E.g. php app/console vivait:queue:worker:email -t 0.5
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.