starcode-krasnodar / yii2-amqp
AMQP protocol extension for Yii2
Installs: 373
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 5
Forks: 4
Open Issues: 4
Type:yii2-extension
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(); }