Package Data | |
---|---|
Maintainer Username: | mookofe |
Maintainer Contact: | cruzrosario@gmail.com (Victor Cruz) |
Package Create Date: | 2015-03-09 |
Package Last Update: | 2019-09-09 |
Home Page: | |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2024-11-14 15:11:37 |
Package Statistics | |
---|---|
Total Downloads: | 50,147 |
Monthly Downloads: | 165 |
Daily Downloads: | 8 |
Total Stars: | 54 |
Total Watchers: | 4 |
Total Forks: | 21 |
Total Open Issues: | 15 |
RabbitMQ and PHP client for Laravel and Lumen that allows you to add and listen queues messages just simple.
1.0.5
Preparation
Open your composer.json file and add the following to the require array:
"mookofe/tail": "1.*"
Install dependencies
$ composer install
Or
$ composer update
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.
Mookofe\Tail\ServiceProvider::class,
In the $aliases array add the following facade for this package.
'Tail' => Mookofe\Tail\Facades\Tail::class,
Add servers connection file running:
$ php artisan vendor:publish --provider="Mookofe\Tail\ServiceProvider" --tag="config"
Register the Lumen Service Provider in bootstrap/app.php:
/*
|--------------------------------------------------------------------------
| Register Service Providers
|--------------------------------------------------------------------------
*/
//...
$app->configure('tail-settings');
$app->register(Mookofe\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/mookofe/tail/config/tail.php to config/tail-settings.php.
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' => '/',
'ssl_context_options' => null,
'connection_timeout' => 3,
'read_write_timeout' => 50, //should be at least 2x heartbeat (if using heartbeat)
'keepalive' => true, //requires php-amqplib v2.4.1+
'heartbeat' => 25, //requires php-amqplib v2.4.1+
'exchange' => 'default_exchange_name',
'consumer_tag' => 'consumer',
'exchange_type' => 'direct',
'content_type' => 'text/plain'
),
'other_server' => array(
'host' => '192.168.0.10',
'port' => 5672,
'username' => 'guest',
'password' => 'guest',
'vhost' => '/',
'ssl_context_options' => array(
'capath' => '/etc/ssl/certs',
'cafile' => './startssl_ca.pem',
'verify_peer' => true,
),
'connection_timeout' => 3.0,
'read_write_timeout' => 3.0,
'keepalive' => false,
'heartbeat' => 0,
'exchange' => 'default_exchange_name',
'consumer_tag' => 'consumer',
'exchange_type' => 'fanout',
'content_type' => 'application/json'
),
),
);
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();
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:
| Name | Description | Default value| |---|---|---| | queue_name | Queue name on RabbitMQ | * Required | | message_limit | Number of messages to be processed | 0: Unlimited | | time | Time in seconds the process will be running | 0: Unlimited | | empty_queue_timeout | Time in seconds to kill listening when the queue is empty | 0: Unlimited | | connection_name | Server connection name | Defined at connections file | | exchange | Exchange name on RabbitMQ Server | Specified on connections file | | vhost | Virtual host on RabbitMQ Server | Specified on connections file |
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.
This package is open-sourced software licensed under the MIT license