本文实例讲述了使用PHP访问RabbitMQ消息队列的方法,分享给大家供大家参考,具体如下.
扩展安装
PHP访问RabbitMQ实际使用的是AMQP协议,所以我们只要安装epel库中的php-pecl-amqp这个包即可
rpm -ivh http://mirror.neu.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install php-pecl-amqp
交换建立
- $connection = new AMQPConnection();
- $connection->connect();
- $channel = new AMQPChannel($connection);
- $exchange = new AMQPExchange($channel);
- $exchange->setName('exchange1');
- $exchange->setType('fanout');
- $exchange->declare();
队列建立
- $connection = new AMQPConnection();
- $connection->connect();
- $channel = new AMQPChannel($connection);
- $queue = new AMQPQueue($channel);
- $queue->setName('queue1');
- $queue->declare();
队列绑定
- $connection = new AMQPConnection();
- $connection->connect();
- $channel = new AMQPChannel($connection);
- $queue = new AMQPQueue($channel);
- $queue->setName('queue1');
- $queue->declare();
- $queue->bind('exchange1', 'routekey');
消息发送
- $connection = new AMQPConnection();
- $connection->connect();
- $channel = new AMQPChannel($connection);
- $exchange = new AMQPExchange($channel);
- $exchange->setName('exchange5');
- $exchange->setType('fanout');
- $exchange->declare();
- for($i = 0; $i < 2000000; $i++) {
- $exchange->publish("message $i", "routekey");
- }
消息接收
- $connection = new AMQPConnection();
- $connection->connect();
- $channel = new AMQPChannel($connection);
- $queue = new AMQPQueue($channel);
- $queue->setName('queue1');
- $queue->declare();
- $queue->bind('exchange1', 'routekey');
- while (true) {
- $queue->consume(function($envelope, $queue){
- echo $envelope->getBody(), PHP_EOL;
- }, AMQP_AUTOACK);
- }
新闻热点
疑难解答