equip / beanstalkd-consumer
Small library for writing command line beanstalkd consumers
Requires
- aura/cli: ^2
- equip/framework: ^1
- pda/pheanstalk: ^3
Requires (Dev)
- phake/phake: ^2
- phpunit/phpunit: ^4
This package is auto-updated.
Last update: 2021-07-31 01:37:22 UTC
README
A small library for writing command line beanstalkd consumers in Equip applications.
Installation
Use Composer.
composer require equip/beanstalkd-consumer
Writing Consumers
A consumer is a PHP class that implements ConsumerInterface
to process jobs received from beanstalkd, each of which is represented by an instance of the Job
class.
Here's an example of a consumer implementation.
namespace Acme; use Equip\BeanstalkConsumer\ConsumerInterface; use Equip\BeanstalkConsumer\Job; class FooConsumer implements ConsumerInterface { public function consume(Job $job) { $id = $job->getId(); $data = $job->getData(); // unserialize and process $data here } }
Using Consumers
To use the consumer shown in the last section, be sure its namespace is included in your Composer autoloader, then invoke the runner as shown in the examples below.
If this library is installed as a project dependency:
BEANSTALKD_CONSUMER="Acme\\FooConsumer" ./vendor/bin/beanstalkd-consumer
If this library is installed as a repository clone:
BEANSTALKD_CONSUMER="Acme\\FooConsumer" ./bin/beanstalkd-consumer
Configuration
These environmental variables may be used to configure the runner.
BEANSTALKD_CONSUMER
- fully-qualified name of a PHP class implementingConsumerInterface
to consume jobsBEANSTALKD_HOST
- hostname of the beanstalkd server, defaults to'127.0.0.1'
BEANSTALKD_PORT
- port on which the beanstalkd server listens, defaults to11300
BEANSTALKD_TUBE
- tube from which the consumer should consume jobs, defaults to'default'
Consumer Dependencies
By default, Auryn is used internally as a resolver to create consumer instances. As such, with some additional code, it can be used to inject dependencies into consumers as well.
In order to apply any additional configurations needed for consumers to the Auryn Injector
instance in use, a custom runner must be written. It will likely look familiar similar to the stock runner except that, in addition to the DefaultConfigurationSet
class that establishes a basic level of configuration for the runner, it will also apply any configurations that consumers require. This can be done using a subclass of ConfigurationSet
as shown in the example below.
namespace Acme; use Equip\BeanstalkdConsumer\Configuration\DefaultConfigurationSet; use Equip\Configuration\ConfigurationSet; class Configuration extends ConfigurationSet { public function __construct() { parent::__construct([ DefaultConfigurationSet::class, FooConfiguration::class, BarConfiguration::class, // etc. ]); } }
The only needed difference between the stock and custom runners would be that the class shown above is used instead of DefaultConfigurationSet
when configuring the Auryn Injector
instance.