Simple php-amqplib wrapper for Laravel
Requires
- php: ^7.4|^8.0
- illuminate/support: ^8.0
- php-amqplib/php-amqplib: >=3.0
Requires (Dev)
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2024-05-14 08:56:46 UTC
README
Simple Laravel wrapper for php-amqplib/php-amqplib
Installation
Run composer:
composer require ngorder/q
Publish the config file and service provider with this Artisan command
php artisan q:install
Two files will be generated, a config file located in config/q.php
and a provider located in
app/Providers/QServiceProvider.php
Usage
First, make sure to update the configuration file.
Publishing a Message
The Message
facade provides functionality to publish a message, you can publish a message by calling the
publish
method, which needs 2 parameters: routing key and the message you want to send, it can be an array or a string.
\Ngorder\Q\Facades\NgorderQ::publish('test.route', [ 'message' => 'Hello World' ]);
The publish
method will take the configuration from app/q.php
to create an exchange and a queue if it does not exist yet.
Delaying a Message
\Ngorder\Q\Facades\NgorderQ::delay(2)->publish('test.route', [ 'message' => 'Hello World' ]);
Delay a message (in minutes) before it gets consumed by the consumer.
Routing
You can attach a method to handle specific routing key in QServiceProvider
protected $routing = [ 'hello.*' => [MyConsumer::class, 'handleWildcard'], 'test.key' => [AnotherConsumer::class, 'handleIt'], 'another.key' => [ [MultiConsumer::class, 'fun1'], [MultiConsumer::class, 'fun2'] ] ];
Or an invokable class
protected $routing = [ 'some.key' => ThisIsInvokable::class, ];
Consuming
To run consumer, first make sure the routing key is registered within the QServiceProvider
. You can run this command after that:
php artisan q:consume my.routing.key
Available options:
--tries=3
Maximal number of tries when a message failed to consume.
--max-memory=128
Maximum memory usage.
Changelog
Please see CHANGELOG for more information what has changed recently.
Contributing
Please see CONTRIBUTING for details.
License
The MIT License (MIT). Please see License File for more information.