LaravelPackages.net
Acme Inc.
Toggle sidebar
mookofe/tail

RabbitMQ and PHP client for Laravel and Lumen that allows you to add and listen queues messages just simple

52.802
54
v1.0.5
About mookofe/tail

mookofe/tail is a Laravel package for rabbitmq and php client for laravel and lumen that allows you to add and listen queues messages just simple. It currently has 54 GitHub stars and 52.802 downloads on Packagist (latest version v1.0.5). Install it with composer require mookofe/tail. Discover more Laravel packages by mookofe or browse all Laravel packages to compare alternatives.

Last updated

mookofe/tail

RabbitMQ and PHP client for Laravel and Lumen that allows you to add and listen queues messages just simple.

Build Status Latest Stable Version License

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.5

Installation

Preparation

Open your composer.json file and add the following to the require array:

"mookofe/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.

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"

Lumen

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.

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'               => '/',
            '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 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:

| 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.

License

This package is open-sourced software licensed under the MIT license

Star History Chart