fhteam / laravel-amqp
AMQP library driver for Laravel Queue
Installs: 14 823
Dependents: 0
Suggesters: 0
Security: 0
Stars: 28
Watchers: 9
Forks: 12
Open Issues: 2
Requires
- php: >=7.1
- ext-json: *
- php-amqplib/php-amqplib: 2.6.*
Requires (Dev)
- laravel/framework: >=5.7.0
- orchestra/testbench: 3.8.*
- squizlabs/php_codesniffer: 1.*
Suggests
- ext-posix: Restart workers if connection is lost to avoid unlimited loop
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