Simple queue mechanism for silex using beanstalkd
Installation using composer:
composer require ronanchilvers\silex-queue-beanstalkd
We're assuming that you have an accessible Beanstalkd instance running somewhere and that you know its network address.
To use the queue service you need to register the provider like so:
By default this assumes that Beanstalkd is running on the default port (11300) on localhost.
There are a few configuration directives that you can use to get the queue service working. You can pass these in using the normal Silex way like this:
$app->register(new Ronanchilvers\Silex\Queue\QueueProvider(), [ 'queue.options' => [ 'host' => '126.96.36.199' ] ]);
The available configuration keys are:
- host : Beanstalkd host (default localhost)
- port : Beanstalkd port (default 11300)
- timeout : Timeout for Beanstalkd connection (default 2 seconds). This option is passed directly through to Pheanstalk.
- persistent : Use a persistent connection to Beanstalkd or not (default false). This option is passed directly through to Pheanstalk.
- default.queue : default queue to push / pull to / from. The queue can be overridden at publish / consume time.
- max.iterations : maximum iterations a worker does when using the queue:consume CLI command before exiting
A simple consume command for use with
symfony/console is provided. The command requires the
knplabs/console-service-provider package as it needs access to the Application object. To use it you can do something like this:
which will add a queue:consume command to the console application.