2017 © Pedro Peláez
 

library lumen-amqp

AMQP wrapper for Lumen to publish and consume messages

image

kamiorz/lumen-amqp

AMQP wrapper for Lumen to publish and consume messages

  • Tuesday, January 10, 2017
  • by KamiOrz
  • Repository
  • 1 Watchers
  • 0 Stars
  • 9 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 1 Open issues
  • 1 Versions
  • 0 % Grown

The README.md

kamiorz/lumen-amqp

AMQP wrapper for Lumen to publish and consume messages especially from RabbitMQ, (*1)

Features

  • Advanced queue configuration
  • Add message to queues easily
  • Listen queues with useful options

Installation

Composer

Add the following to your require part within the composer.json:, (*2)

"kamiorz/lumen-amqp": "1.*"

```batch $ php composer update, (*3)


or

$ php composer require kamiorz/lumen-amqp, (*4)


## Integration ### Lumen Create a **config** folder in the root directory of your Lumen application and copy the content from **vendor/kami/lumen-amqp/config/amqp.php** to **config/amqp.php**. Adjust the properties to your needs. ```php return [ 'use' => 'production', 'properties' => [ 'production' => [ 'host' => 'localhost', 'port' => 5672, 'username' => 'username', 'password' => 'password', 'vhost' => '/', 'exchange' => 'amq.topic', 'exchange_type' => 'topic', 'consumer_tag' => 'consumer', 'ssl_options' => [], // See https://secure.php.net/manual/en/context.ssl.php 'connect_options' => [], // See https://github.com/php-amqplib/php-amqplib/blob/master/PhpAmqpLib/Connection/AMQPSSLConnection.php 'queue_properties' => ['x-ha-policy' => ['S', 'all']], 'exchange_properties' => [], 'timeout' => 0 ], ], ];

Register the Lumen Service Provider in bootstrap/app.php:, (*5)

/*
|--------------------------------------------------------------------------
| Register Service Providers
|--------------------------------------------------------------------------
*/

//...

$app->configure('amqp');
$app->register(KamiOrz\Amqp\LumenServiceProvider::class);

//...

Add Facade Support for Lumen 5.2+, (*6)

//...
$app->withFacades();
class_alias(\Illuminate\Support\Facades\App::class, 'App');
//...

Publishing a message

Push message with routing key

    Amqp::publish('routing-key', 'message');

Push message with routing key and create queue

    Amqp::publish('routing-key', 'message' , ['queue' => 'queue-name']);

Push message with routing key and overwrite properties

    Amqp::publish('routing-key', 'message' , ['exchange' => 'amq.direct']);

Consuming messages

Consume messages, acknowledge and stop when no message is left

Amqp::consume('queue-name', function ($message, $resolver) {

   var_dump($message->body);

   $resolver->acknowledge($message);

   $resolver->stopWhenProcessed();

});

Consume messages forever

Amqp::consume('queue-name', function ($message, $resolver) {

   var_dump($message->body);

   $resolver->acknowledge($message);

});

Consume messages, with custom settings

Amqp::consume('queue-name', function ($message, $resolver) {

   var_dump($message->body);

   $resolver->acknowledge($message);

}, [
  'timeout' => 2,
  'vhost'   => 'vhost3'
]);

Fanout example

Publishing a message

\Amqp::publish('', 'message' , [
    'exchange_type' => 'fanout',
    'exchange' => 'amq.fanout',
]);

Consuming messages

\Amqp::consume('', function ($message, $resolver) {
    var_dump($message->body);
    $resolver->acknowledge($message);
}, [
    'exchange' => 'amq.fanout',
    'exchange_type' => 'fanout',
    'queue_force_declare' => true,
    'queue_exclusive' => true,
    'persistent' => true// required if you want to listen forever
]);

License

This package is open-sourced software licensed under the MIT license, (*7)

The Versions

10/01 2017

dev-master

9999999-dev

AMQP wrapper for Lumen to publish and consume messages

  Sources   Download

MIT

The Requires

 

The Development Requires

by XiaoGai

lumen rabbitmq queue package message queue amqp