GithubHelp home page GithubHelp logo

bluemove / tail Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mookofe/tail

0.0 9.0 0.0 33 KB

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

License: MIT License

PHP 100.00%

tail's Introduction

bluemove/tail

THIS IS A FORK FROM mookofe/tail https://github.com/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.4

Installation

Preparation

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

"mookofe/tail": "1.*"

Install dependencies

$ php composer install

Or

$ php 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',

In the $aliases array add the following facade for this package.

'Tail' => 'Mookofe\Tail\Facades\Tail',

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

tail's People

Contributors

jaumeavila avatar martinhilscher avatar mookofe avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.