fhteam/laravel-amqp

AMQP library driver for Laravel Queue

v3.1.1 2019-06-25 08:57 UTC

This package is auto-updated.

Last update: 2024-03-25 19:36:28 UTC


README

AMQP driver for Laravel queue. This driver uses popular AMQPLib for PHP: https://github.com/videlalvaro/php-amqplib (This library is a pure PHP implementation of the AMQP protocol so it may be used to connect to a number of queue managers around)

Installation

Please do note, that package name has changed to fhteam/laravel-amqp. Old name should still work, though it will not be maintained.

  • Simple composer installation is ok: composer require fhteam/laravel-amqp:~1.0 (set version requirement to your favourite)
  • Note, that mbstring and bcmath extensions are required for php-amqplib to work properly. The first is not yet listed in library's composer.json (php-amqplib/php-amqplib#229)

Configuration

In your config/queue.php file you have to provide the following:

'default' => 'amqp',

'connections' => array(
    'amqp' => array(
        'driver' => 'amqp',
        'host' => 'localhost',
        'port' => '5672',
        'user' => 'guest',
        'password' => 'guest',
        'vhost' => '/',
        'queue' => null,
        'queue_flags' => ['durable' => true, 'routing_key' => null], //Durable queue (survives server crash)
        'declare_queues' => true, //If we need to declare queues each time before sending a message. If not, you will have to declare them manually elsewhere
        'message_properties' => ['delivery_mode' => 2], //Persistent messages (survives server crash)
        'channel_id' => null,
        'exchange_name' => null,
        'exchange_type' => null,
        'exchange_flags' => null,
        'keepalive' > false,
        'heartbeat' => 0,
        'retry_after' => 0,
        ),
),

In your config/app.php add 'Forumhouse\LaravelAmqp\ServiceProvider\LaravelAmqpServiceProvider' to the list of service providers registered.

Improved worker stability (PHP 7.1+ is required)

For better stability please add following code in app/Exceptions/Handler.php:

class Handler extends ExceptionHandler
{

to

class Handler extends ExceptionHandler
{
    use AMQPFailureDetector;

And

public function report(Exception $exception)
{
    parent::report($exception);
}

to

public function report(Exception $exception)
{
    $this->catchAMQPConnectionFailure($exception);
    parent::report($exception);
}

Usage

To find out how to use Laravel Queues, please refer to the following official documentation: http://laravel.com/docs/queues