RabbitMQ是一个开源的基于AMQP(Advanced Message Queuing Protocol)标准,并且可靠性高的企业级消息系统,目前很多网站在用,包括reddit,Poppen.de等。
1. Ubuntu下安装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:)
4. Demo程序
producer:
<?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
=
;
$i
<
100
;
$i
++
)
{
$res
=
$exchange
->
publish
(
$i
.
'msg'
,
'wei.'
.
$i
)
;
if
(
$res
)
{
echo
$i
.
'msg'
.
" Yes\n"
;
}
else
{
echo
$i
.
'msg'
.
" No\n"
;
}
}
?>
<?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($queueMessagesas$item)
{
echo"$i.$item\n";
}
?>
http://www.rabbitmq.com/download.html下载地址