starcode-krasnodar / yii2-amqp
AMQP protocol extension for Yii2
Installs: 374
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 4
Forks: 4
Open Issues: 4
Type:yii2-extension
pkg:composer/starcode-krasnodar/yii2-amqp
Requires
- php-amqplib/php-amqplib: 2.5.*
 - yiisoft/yii2: *
 
README
Extension Yii2 for working with AMQP protocol
installation
Via composer
composer require "starcode/yii2-amqp:2.*"
or add composer.json
{
    "require": {
        "starcode/yii2-amqp": "2.*"
    }
}
configuration
Create amqp component config
[
    'components' => [
        'amqp' => [
            'class' => 'starcode\amqp\components\Connection',
            'host' => 'localhost',
            'user' => 'guest',
            'password' => 'guest',
            'connectionOptions' => [
                'vhost' => '/',
            ],
            
            'queuesConfig' => [
                'email' => [
                    'queue' => 'email',
                    'durable' => true,
                    'auto_delete' => false,
                ],
                'logs' => [
                    'queue' => 'logs',
                    'durable' => true,
                    'auto_delete' => false,
                ],
            ],
        ],
    ],
];
usage
Publish message.
// get queue object $queue = Yii::$app->get('amqp')->getQueue('email'); // create message object $message = new Message('my message', ['delivery_mode' => 2]); // publish message $queue->publish($message);
Listen messages
// get queue object $queue = Yii::$app->get('amqp')->getQueue('email'); // callback listener function $callback = function($message) { echo $message->body; // acknowledge message $channel = $msg->delivery_info['channel']; $channel->basic_ack($msg->delivery_info['delivery_tag']); }; $queue->consume([ 'callback' => $callback, ]); $channel = $queue->getChannel(); while (count($channel->callbacks)) { $channel->wait(); }