foolkaka / tail
RabbitMQ and PHP client for Laravel and Lumen that allows you to add and listen queues messages just simple
Requires
- php: >=5.5.9
- illuminate/support: 5.*
- php-amqplib/php-amqplib: 2.*
Requires (Dev)
- mockery/mockery: dev-master
- phpunit/phpunit: 4.0.*
This package is not auto-updated.
Last update: 2024-10-27 04:08:00 UTC
README
RabbitMQ and PHP client for Laravel and Lumen that allows you to add and listen queues messages just simple.
Features
- Simple queue configuration
- Multiple server connections
- Add message to queues easily
- Listen queues with useful options
Requirements
- php-amqplib/php-amqplib: 2.*
Version
1.0.6
Installation
Preparation
Open your composer.json file and add the following to the require array:
"foolkaka/tail": "1.*"
Install dependencies
$ composer install
Or
$ composer update
Integration
Laravel
After installing the package, open your Laravel config file config/app.php and add the following lines.
In the $providers array add the following service provider for this package.
Foolkaka\Tail\ServiceProvider::class,
In the $aliases array add the following facade for this package.
'Tail' => Foolkaka\Tail\Facades\Tail::class,
Add servers connection file running:
$ php artisan vendor:publish --provider="Foolkaka\Tail\ServiceProvider" --tag="config"
Lumen
Register the Lumen Service Provider in bootstrap/app.php:
/* |-------------------------------------------------------------------------- | Register Service Providers |-------------------------------------------------------------------------- */ //... $app->configure('tail-settings'); $app->register(Foolkaka\Tail\LumenServiceProvider::class); //...
Make sure sure $app->withFacades();
is uncomment in your bootstrap/app.php file
Create a config folder in the root directory of your Lumen application and copy the content from vendor/foolkaka/tail/config/tail.php to config/tail-settings.php.
RabbitMQ Connections
By default the library will use the RabbitMQ installation credentials (on a fresh installation the user "guest" is created with password "guest").
To override the default connection or add more servers, edit the RabbitMQ connections file at: config/tail-settings.php
return array( 'default' => 'default_connection', 'connections' => array( 'default_connection' => array( 'host' => 'localhost', 'port' => 5672, 'username' => 'guest', 'password' => 'guest', 'vhost' => '/', 'exchange' => 'default_exchange_name', 'consumer_tag' => 'consumer', 'exchange_type'=> 'direct', 'content_type' => 'text/plain', 'ssl_connect' => false, 'ssl_options' => [ 'cafile' => '/opt/certs/ca.cert.pem', 'local_cert' => '/opt/certs/local_cert.pem', 'verify_peer' => true, 'verify_peer_name' => false, 'allow_self_signed' => true ] ), 'other_server' => array( 'host' => '192.168.0.10', 'port' => 5672, 'username' => 'guest', 'password' => 'guest', 'vhost' => '/', 'exchange' => 'default_exchange_name', 'consumer_tag' => 'consumer', 'exchange_type'=> 'fanout', 'content_type' => 'application/json', 'ssl_connect' => false, 'ssl_options' => [ 'cafile' => '/opt/certs/ca.cert.pem', 'local_cert' => '/opt/certs/local_cert.pem', 'verify_peer' => true, 'verify_peer_name' => false, 'allow_self_signed' => true ] ), ), );
Adding messages to queue:
Adding a simple message
Tail::add('queue-name', 'message');
Adding message changing RabbitMQ server
Tail::add('queue-name', 'message', array('connection_name' => 'connection_name_config_file'));
Adding message with different exchange
Tail::add('queue-name', 'message', array('exchange' => 'exchange_name'));
Adding message with different content type
Tail::add('queue-name', '{ 'message' : 'message' }', array('content_type' => 'application/json'));
Adding message with different options
$options = array ( 'connection_name' => 'connection_name_config_file', 'exchange' => 'exchange_name', 'vhost' => 'vhost' ); Tail::add('queue-name', 'message', $options);
Using Tail object
$message = new Tail::createMessage; $message->queue_name = 'queue-name'; $message->message = 'message'; $message->connection_name = 'connection_name_in_config_file'; $message->exchange = 'exchange_name'; $message->vhost = 'vhost'; $message->content_type = 'content/type' $message->save();
Listening queues:
Closure based listener
Tail::listen('queue-name', function ($message) { //Your message logic code });
Closure listener with options
$options = array( 'message_limit' => 50, 'time' => 60, 'empty_queue_timeout' => 5, 'connection_name' => 'connection_name_in_config_file', 'exchange' => 'exchange_name', 'vhost' => 'vhost' ); Tail::listenWithOptions('queue-name', $options, function ($message) { //Your message logic code });
Options definitions:
By default the listen process will be running forever unless you specify one of the running time arguments above (message_limit, time, empty_queue_timeout). They can be mixed all together, so when one of the condition is met the process will be stopped.
License
This package is open-sourced software licensed under the MIT license