vladmeh / rabbitmq-client
Laravel RabbitMQ Client
2.0.3
2021-02-11 11:38 UTC
Requires
- php: ^7.2.5
- ext-json: *
- ext-simplexml: *
- php-amqplib/php-amqplib: ^2.12
Requires (Dev)
- orchestra/testbench: ^5.0
- phpunit/phpunit: ^8.5|^9.3
README
vladmeh/rabbitmq-client
Wrapper to php-amqplib library for publishing and consuming RabbitMQ messages using Laravel framework
Features
PHP8.0 support will be available after php-amqplib is updated to the next major version 3.0. (php-amqplib/php-amqplib#858)
Version Compatibility
Installation
Composer
$ composer require vladmeh/rabbit-client
or add the following to your requirement part within the composer.json:
{ "require": { "vladmeh/rabbitmq-client": "^2.*" } }
Laravel will automatically register service provider (Vladmeh\RabbitMQ\RabbitMQClientProvider) and facade when is installed
Configure
Add these properties to .env with proper values:
RABBITMQ_HOST=localhost RABBITMQ_PORT=5672 RABBITMQ_USER=guest RABBITMQ_PASSWORD=guest
If you need advanced configuration properties run:
$ php artisan vendor:publish --tag=rabbit
This command will create a config file \config\rabbit.php
Integration
Producer
Publish a message in the existing queue
Rabbit::publish('message', '', 'queue-name');
Publish a message in the existing exchange
Rabbit::publish('message', 'exchange-name', 'routing-key');
Publish a message, with custom settings
Rabbit::publish('message', 'amq.fanout', '', [ 'hosts' => [ 'vhosts' => 'vhost3' ], 'message' => [ 'content_type' => 'application/json', ], 'exchange_declare' => [ 'type' => 'fanout', 'auto_delete' => true, ] ]);
All default settings are defined in
\config\rabbit.php
.
Consumer
Consume messages to an existing queue
Rabbit::consume('queue-name', function (AMQPMessage $msg) { $msg->ack(); var_dump($msg->body); if ($msg->getMessageCount() === null) { $msg->getChannel()->basic_cancel($msg->getConsumerTag()); } });
RPC client
$response = Rabbit::rpc('message', 'queue-name', ['connection' => [ 'read_write_timeout' => 10.0, 'channel_rpc_timeout' => 10.0 ]]); var_dump($response);