devmustafa / yii2-amqp
Yii2 扩展使您能够使用原生 Yii2 语法来使用 RabbitMQ
v1.0
2016-08-06 21:15 UTC
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-09-23 14:49:34 UTC
README
Yii2 扩展使您能够使用原生 Yii2 语法来使用 RabbitMQ 队列。
安装
通过 composer
$ php composer.phar require devmustafa/yii2-amqp "dev-master"
或者添加
"devmustafa/yii2-amqp": "dev-master"
到您的 composer.json
文件的 require
部分。
此外,还需要添加以下内容
'amqp' => [
'class' => 'devmustafa\amqp\components\Amqp',
'host' => '127.0.0.1',
'port' => 5672,
'user' => 'username',
'password' => 'password',
'vhost' => '/',
],
到您的 config.php
文件的 components
部分。
如何使用
1- 发送
$exchange = 'exchange';
$queue = 'queue';
$dataArray = array('x', 'y', 'z');
$message = serialize($dataArray);
Yii::$app->amqp->declareExchange($exchange, $type = 'direct', $passive = false, $durable = true, $auto_delete = false);
Yii::$app->amqp->declareQueue($queue, $passive = false, $durable = true, $exclusive = false, $auto_delete = false);
Yii::$app->amqp->bindQueueExchanger($queue, $exchange, $routingKey = $queue);
Yii::$app->amqp->publish_message($message, $exchange, $routingKey = $queue, $content_type = 'applications/json', $app_id = Yii::$app->name);
2- 接收
set_time_limit(0);
error_reporting(E_ALL);
use devmustafa\amqp\PhpAmqpLib\Connection\AMQPConnection;
$exchange = 'exchange';
$queue = 'queue';
$consumer_tag = 'consumer_1';
$conn = new AMQPConnection('localhost', 5672, 'username', 'password', '/');
$ch = $conn->channel();
$ch->exchange_declare($exchange, 'direct', false, true, false);
$ch->queue_bind($queue, $exchange);
function process_message($msg) {
$body = unserialize($msg->body);
}
$ch->basic_consume($queue, $consumer_tag, false, false, false, false, 'process_message');
function shutdown($ch, $conn) {
$ch->close();
$conn->close();
}
register_shutdown_function('shutdown', $ch, $conn);
// Loop as long as the channel has callbacks registered
while (count($ch->callbacks)) {
$ch->wait();
}