iviu96afa/yii2-amqp

此包已被废弃,不再维护。作者建议使用 devmustafa/yii2-amqp 包。

Yii2 扩展允许您使用原生 Yii2 语法使用 RabbitMQ

安装量: 1,061

依赖者: 0

推荐者: 0

安全: 0

星标: 1

关注者: 1

分支: 1

类型:yii-extension

v1.0 2016-08-06 21:15 UTC

This package is not auto-updated.

Last update: 2022-02-01 12:42:59 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();
	}