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(); }