RabbitMQ是一个开源的基于AMQP(Advanced Message Queuing Protocol)标准,并且可靠性高的企业级消息系统,目前很多网站在用,包括reddit,Poppen.de等。
1. 安装RabbitMQ sudo apt-get install rabbitmq-server sudo /etc/init.d/rabbitmq-server start
2. 安装librabbitmq sudo apt-get install mercurial hg clone http://hg.rabbitmq.com/rabbitmq-c cd rabbitmq-c hg clone http://hg.rabbitmq.com/rabbitmq-codegen codegen autoreconf -i && ./configure && make && sudo make install 3. 安装php-rabbit扩展 wget http://php-rabbit.googlecode.com/files/php-rabbit.r91.tar.gz tar -zxvf php-rabbit.r91.tar.gz cd php-rabbit.r91 /path/to/php/bin/phpize ./configure –with-amqp –with-php-config=/path/to/php/bin/php-config make && sudo make install 编辑 php.ini 添加: extension=rabbit.so 输出phpinfo看下是否扩展已经加载成功,have fun:)
<?php /** * producer demo * * @author wei * @version $Id$ **/ $params = array('host' =>'localhost', 'port' => 5672, 'login' => 'guest', 'password' => 'guest', 'vhost' => '/'); $cnn = new AMQPConnect($params); // declare Exchange $exchange = new AMQPExchange($cnn); $exchange->declare('ex1', 'topic', AMQP_DURABLE ); // declare Queue $queue = new AMQPQueue($cnn); $queue->declare('queue1', AMQP_DURABLE); // bind Queue $queue->bind('ex1','wei.#'); // publishing $msg = "msg"; for ($i=0; $i < 100; $i++) { $res = $exchange->publish($i . 'msg', 'wei.' . $i); if ($res) { echo $i . 'msg' . " Yes\n"; } else { echo $i . 'msg' . " No\n"; } } ?> consumer: ?View Code PHP <?php /** * consumer demo * * @author wei * @version $Id$ **/ $params = array('host' =>'localhost', 'port' => 5672, 'login' => 'guest', 'password' => 'guest', 'vhost' => '/'); $cnn = new AMQPConnect($params); // create the Queue $queue = new AMQPQueue($cnn, 'queue1'); $queueMessages = $queue->consume(100); foreach($queueMessages as $item) { echo "$i.$item\n"; } ?>
参考:
http://www.rabbitmq.com/install.html
http://blog.ftofficer.com/2010/03/translation-rabbitmq-python-rabbits-and-warrens/
http://code.google.com/p/php-rabbit/