starcode-krasnodar / yii2-amqp
此包最新版本(2.1.0)没有可用的许可证信息。
Yii2 的 AMQP 协议扩展
2.1.0
2016-08-29 13:37 UTC
Requires
- php-amqplib/php-amqplib: 2.5.*
- yiisoft/yii2: *
README
用于与 AMQP 协议一起工作的 Yii2 扩展
安装
通过 composer
composer require "starcode/yii2-amqp:2.*"
或添加 composer.json
{
"require": {
"starcode/yii2-amqp": "2.*"
}
}
配置
创建 amqp 组件配置
[
'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,
],
],
],
],
];
用法
发布消息。
// 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);
监听消息
// 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(); }