nepster-web / php-simple-queue
Simple queues implementation in PHP through database.
Installs: 2 934
Dependents: 0
Suggesters: 0
Security: 0
Stars: 18
Watchers: 2
Forks: 1
Open Issues: 1
Requires
- php: ^7.4|^8.0
- ext-json: *
- ext-pdo: *
- doctrine/dbal: ^2.0|^3.0
- laminas/laminas-hydrator: ^4.1
- ramsey/uuid: ^4.1
- symfony/serializer: ^5.2
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.18
- phpunit/phpunit: ^9.5
- roave/security-advisories: dev-master
This package is auto-updated.
Last update: 2024-11-09 04:09:24 UTC
README
This package is under development. Api classes of this application can be changed.
PHP Simple Queue
Introduction
PHP Simple Queue - a library for running tasks asynchronously via queues. It is production ready, battle-tested a simple messaging solution for PHP.
It supports queues based on DB.
Requirements
You'll need at least PHP 7.4 (it works best with PHP 8).
Installation
The preferred way to install this extension is through composer:
Either run
php composer.phar require --prefer-dist nepster-web/php-simple-queue
or add
"nepster-web/php-simple-queue": "*"
💻 Basic Usage
Create transport (see more information):
$transport = new \Simple\Queue\Transport\DoctrineDbalTransport($connection);
Send a new message to queue (producing)
$config = \Simple\Queue\Config::getDefault() ->registerProcessor('my_queue', static function(\Simple\Queue\Context $context): string { // Your message handling logic return \Simple\Queue\Consumer::STATUS_ACK; }); $producer = new \Simple\Queue\Producer($transport, $config); $message = $producer->createMessage('my_queue', ['key' => 'value']); $producer->send($message);
Job dispatching (producing)
$config = \Simple\Queue\Config::getDefault() ->registerJob(MyJob::class, new MyJob()); $producer = new \Simple\Queue\Producer($transport, $config); $producer->dispatch(MyJob::class, ['key' => 'value']);
Processing messages from queue (consuming)
$producer = new \Simple\Queue\Producer($transport, $config); $consumer = new \Simple\Queue\Consumer($transport, $producer, $config); $consumer->consume();
For more details see the example code and read the guide.
Testing
To run the tests locally, in the root directory execute below
./vendor/bin/phpunit
or you can run tests in a docker container
cd .docker
make build
make start
make composer cmd='test'
📖 Documentation
See the official guide.
📚 Resources
📰 Changelog
Detailed changes for each release are documented in the CHANGELOG.md.
🔒 License
See the MIT License file for license rights and limitations (MIT).