有个哥们写了一篇文章:
http://blog.163.com/a12333a_li/blog/static/8759428520127305372366/
于是否按这位兄弟说的做了下测试,如下:
rabbitMQAddQueTest.php
rabbitMQGetTest.php
测试程序及扩展:
先执行接受程序,让其等待:php rabbitMQGetTest.php (其实先入队,后去取也没有问题的,只是为了方便看一入队就出队了:-))
后执行入队程序:
root@192.168.98.128:/data0/htdocs/tmp# php rabbitMQAddQueTest.php
0msg Yes
1msg Yes
2msg Yes
3msg Yes
4msg Yes
5msg Yes
6msg Yes
7msg Yes
8msg Yes
9msg Yes
10msg Yes
11msg Yes
12msg Yes
13msg Yes
14msg Yes
15msg Yes
16msg Yes
17msg Yes
18msg Yes
19msg Yes
查看取的程序,如下:
php rabbitMQGetTest.php
0.0msg
1.1msg
2.2msg
3.3msg
4.4msg
5.5msg
6.6msg
7.7msg
8.8msg
9.9msg
10.10msg
11.11msg
12.12msg
13.13msg
14.14msg
15.15msg
16.16msg
17.17msg
18.18msg
19.19msg
rabbitMQ 是一个在AMQP基础上完整的,可复用的企业消息系统。主要应用在将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。
环境:
CentOS5.7 x64
需要的软件:
otp_src_R15B01.tar.gz
rabbitmq-server-2.8.5.tar.gz
simplejson-2.6.1.tar.gz
jdk-6u34-linux-i586.rpm
软件包下载:
wget http://www.erlang.org/download/otp_src_R15B01.tar.gz
wget http://www.rabbitmq.com/releases/rabbitmq-server/v2.8.5/rabbitmq-server-2.8.5.tar.gz
wget http://pypi.python.org/packages/source/s/simplejson/simplejson-2.6.1.tar.gz
JDK到 http://www.oracle.com/technetwork/java/javase/downloads/jdk6-downloads-1637591.html //选择自己对应的版本
1. 基础环境安装:
1.1 JDK安装
rpm -ivh jdk-6u34-linux-i586.rpm
然后
vi /etc/profile
在最后面添加:
JAVA_HOME=/usr/java/jdk1.6.0_34
JRE_HOME=/usr/java/jdk1.6.0_34/jre
JAVA_BIN=/usr/java/jdk1.6.0_34/bin
PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
1.2 解决依赖
yum install -y docbook-style-xsl xmlto git wxGTK wxGTK-devel expat expat-devel librabbitmq make gcc44 gcc44-c++ libstdc++44-devel hg libtool openssl openssl-devel unixODBC unixODBC-devel unixODBC-libs ncurses ncurses-devel tk python26
然后
vi /etc/profile
在最后面添加:
CC=/usr/bin/gcc44
CXX=/usr/bin/g++44
保存后执行以下语句立即生效
source /etc/profile
1.3 解决python的升级问题
mv /usr/bin/python /usr/bin/python.bak.2.4
ln -s /usr/bin/python2.6 /usr/bin/python
1.4 验证编辑环境是否正确
确认java版本是不是 1.6.0_34(根据自己安装的版本)
java -version
java version "1.6.0_34"
确认python版本是不是 2.6.*
python -V
Python 2.6.8
如果环境不对,请检测。
关于python升级后不能yum的解决方法看另一篇
http://blog.163.com/a12333a_li/blog/static/87594285201272421852435/
2. 软件安装:
2.1 Rabbitmq 是用 erlang 语言编写的,所以先安装 Erlang.
安装Erlang
tar zxf otp_src_R15B01.tar.gz
cd otp_src_R15B01
./configure
这里编译最后可能出现 fop is missing.的提示,不用管它。
make
make install
2.2 安装simplejson
tar zxf simplejson-2.6.1.tar.gz
cd simplejson-2.6.1
python setup.py build
python setup.py install
2.3 安装RabbitMQ
tar zxf rabbitmq-server-2.8.5.tar.gz
cd rabbitmq-server-2.8.5
make
make install TARGET_DIR=/usr/local SBIN_DIR=/usr/local/sbin MAN_DIR=/usr/local/man
2.4 验证安装:
ls /usr/local/sbin/rabbitmq*
看看是否有以下文件
/usr/local/sbin/rabbitmqctl
/usr/local/sbin/rabbitmq-defaults
/usr/local/sbin/rabbitmq-env
/usr/local/sbin/rabbitmq-plugins
/usr/local/sbin/rabbitmq-server
3. 启动:
/usr/local/sbin/rabbitmq-server start &
默认监听端口5672
如果提示:
ERROR: epmd error for host "$hostname": address (unable to establish tcp connection)
我的hostname叫dataserver1,一开始我看错了,以为是database1 我就奇怪这东西还有连接数据库,浪费了20分钟百度。
把hostname名称添加到 /etc/hosts的127.0.0.1 那行的最后面
4. 安装插件管理界面
mkdir -m 777 /etc/rabbitmq/
rabbitmq-plugins enable rabbitmq_management
重启rabbitmq-server
rabbitmqctl stop
rabbitmq-server start &
查看管理端口有没有启动:
netstat -tnlp|grep 55672
浏览器打开http://IP:55672/mgmt/ 账号密码都是guest
5. 安装php插件
RabbitMQ 官方提供了三种 PHP 可用的扩展,分别是:
php-amqp
http://code.google.com/p/php-amqp/
php-rabbit
http://code.google.com/p/php-rabbit/
php-amqplib
http://code.google.com/p/php-amqplib/
这里只测试amqp和rabbit插件的安装
5.1 php-amqp插件:
//安装simplejson
wget http://pypi.python.org/packages/source/s/simplejson/simplejson-2.6.1.tar.gz
tar zxvf simplejson-2.6.1.tar.gz
cd simplejson-2.6.1
python setup.py build
python setup.py install
cd ..
//安装rabbitmq
wget http://hg.rabbitmq.com/rabbitmq-c/archive/ce1eaceaee94.tar.gz -O rabbitmq-c.tar.gz
wget http://hg.rabbitmq.com/rabbitmq-codegen/archive/c7c5876a05bb.tar.gz -O rabbitmq-codegen.tar.gz
tar zxvf rabbitmq-c.tar.gz
tar zxvf rabbitmq-codegen.tar.gz
cp -a rabbitmq-codegen-c7c5876a05bb rabbitmq-c-ce1eaceaee94/codegen
cp -a rabbitmq-codegen-c7c5876a05bb /codegen //复制到根目录,不然编译会出错
cd rabbitmq-c-ce1eaceaee94
autoreconf -i
./configure && make && make install
cd ..
//下载php-amqp
wget ‘http://php-amqp.googlecode.com/files/amqp-0.0.7.tgz’
wget ‘http://php-amqp.googlecode.com/issues/attachment?aid=-1144008813478455001&name=issue2.patch2&token=MIAWwjCHrtsxZfuFTs_-JORHod4%3A1346297990942’ //path补丁,不然编译不过去
tar zxvf amqp-0.0.7.tgz
patch -d amqp-0.0.7 < issue2.patch2
cd amqp-0.0.7
./configure --with-php-config=/usr/local/php/bin/php-config --with-amqp
make
make install
vi /usr/local/php/etc/php.ini
添加
extension = amqp.so
验证:
/usr/local/php/bin/php -m | grep amqp
重启php或者apache
5.2 php-rabbit插件:
//安装simplejson
wget http://pypi.python.org/packages/source/s/simplejson/simplejson-2.6.1.tar.gz
tar zxvf simplejson-2.6.1.tar.gz
cd simplejson-2.6.1
python setup.py build
python setup.py install
cd ..
//安装rabbitmq
wget http://hg.rabbitmq.com/rabbitmq-c/archive/ce1eaceaee94.tar.gz -O rabbitmq-c.tar.gz
wget http://hg.rabbitmq.com/rabbitmq-codegen/archive/c7c5876a05bb.tar.gz -O rabbitmq-codegen.tar.gz
tar zxvf rabbitmq-c.tar.gz
tar zxvf rabbitmq-codegen.tar.gz
cp -a rabbitmq-codegen-c7c5876a05bb rabbitmq-c-ce1eaceaee94/codegen
cp -a rabbitmq-codegen-c7c5876a05bb /codegen //复制到根目录,不然编译会出错
cd rabbitmq-c-ce1eaceaee94
autoreconf -i
./configure && make && make install
cd ..
//安装php-rabbit插件
wget http://php-rabbit.googlecode.com/files/php-rabbit.r91.tar.gz
tar zxvf php-rabbit.r91.tar.gz
cd php-rabbit
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-rabbit
make && make install
vi /usr/local/php/etc/php.ini
添加
extension = rabbit.so
验证:
/usr/local/php/bin/php -m | grep rabbit
重启php或者apache
6. 测试php连接rabbitMQ (使用 amqp 模式)
测试代码:(马玉福提供)
cat test.php
<?php
/**
* producer demo
*
* @author wei
* @version $Id$
**/
$params = array('host' =>'192.168.41.141',
'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 < 20; $i++) {
$res = $exchange->publish($i . 'msg', 'wei.' . $i);
if ($res) {
echo $i . 'msg' . " Yes\n";
} else {
echo $i . 'msg' . " No\n";
}
}
?>
执行 /usr/local/php/bin/php test.php
如果返回:
http://blog.163.com/a12333a_li/blog/static/8759428520127305372366/
于是否按这位兄弟说的做了下测试,如下:
rabbitMQAddQueTest.php
rabbitMQGetTest.php
测试程序及扩展:
先执行接受程序,让其等待:php rabbitMQGetTest.php (其实先入队,后去取也没有问题的,只是为了方便看一入队就出队了:-))
后执行入队程序:
root@192.168.98.128:/data0/htdocs/tmp# php rabbitMQAddQueTest.php
0msg Yes
1msg Yes
2msg Yes
3msg Yes
4msg Yes
5msg Yes
6msg Yes
7msg Yes
8msg Yes
9msg Yes
10msg Yes
11msg Yes
12msg Yes
13msg Yes
14msg Yes
15msg Yes
16msg Yes
17msg Yes
18msg Yes
19msg Yes
查看取的程序,如下:
php rabbitMQGetTest.php
0.0msg
1.1msg
2.2msg
3.3msg
4.4msg
5.5msg
6.6msg
7.7msg
8.8msg
9.9msg
10.10msg
11.11msg
12.12msg
13.13msg
14.14msg
15.15msg
16.16msg
17.17msg
18.18msg
19.19msg
rabbitMQ 是一个在AMQP基础上完整的,可复用的企业消息系统。主要应用在将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。
环境:
CentOS5.7 x64
需要的软件:
otp_src_R15B01.tar.gz
rabbitmq-server-2.8.5.tar.gz
simplejson-2.6.1.tar.gz
jdk-6u34-linux-i586.rpm
软件包下载:
wget http://www.erlang.org/download/otp_src_R15B01.tar.gz
wget http://www.rabbitmq.com/releases/rabbitmq-server/v2.8.5/rabbitmq-server-2.8.5.tar.gz
wget http://pypi.python.org/packages/source/s/simplejson/simplejson-2.6.1.tar.gz
JDK到 http://www.oracle.com/technetwork/java/javase/downloads/jdk6-downloads-1637591.html //选择自己对应的版本
1. 基础环境安装:
1.1 JDK安装
rpm -ivh jdk-6u34-linux-i586.rpm
然后
vi /etc/profile
在最后面添加:
JAVA_HOME=/usr/java/jdk1.6.0_34
JRE_HOME=/usr/java/jdk1.6.0_34/jre
JAVA_BIN=/usr/java/jdk1.6.0_34/bin
PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
1.2 解决依赖
yum install -y docbook-style-xsl xmlto git wxGTK wxGTK-devel expat expat-devel librabbitmq make gcc44 gcc44-c++ libstdc++44-devel hg libtool openssl openssl-devel unixODBC unixODBC-devel unixODBC-libs ncurses ncurses-devel tk python26
然后
vi /etc/profile
在最后面添加:
CC=/usr/bin/gcc44
CXX=/usr/bin/g++44
保存后执行以下语句立即生效
source /etc/profile
1.3 解决python的升级问题
mv /usr/bin/python /usr/bin/python.bak.2.4
ln -s /usr/bin/python2.6 /usr/bin/python
1.4 验证编辑环境是否正确
确认java版本是不是 1.6.0_34(根据自己安装的版本)
java -version
java version "1.6.0_34"
确认python版本是不是 2.6.*
python -V
Python 2.6.8
如果环境不对,请检测。
关于python升级后不能yum的解决方法看另一篇
http://blog.163.com/a12333a_li/blog/static/87594285201272421852435/
2. 软件安装:
2.1 Rabbitmq 是用 erlang 语言编写的,所以先安装 Erlang.
安装Erlang
tar zxf otp_src_R15B01.tar.gz
cd otp_src_R15B01
./configure
这里编译最后可能出现 fop is missing.的提示,不用管它。
make
make install
2.2 安装simplejson
tar zxf simplejson-2.6.1.tar.gz
cd simplejson-2.6.1
python setup.py build
python setup.py install
2.3 安装RabbitMQ
tar zxf rabbitmq-server-2.8.5.tar.gz
cd rabbitmq-server-2.8.5
make
make install TARGET_DIR=/usr/local SBIN_DIR=/usr/local/sbin MAN_DIR=/usr/local/man
2.4 验证安装:
ls /usr/local/sbin/rabbitmq*
看看是否有以下文件
/usr/local/sbin/rabbitmqctl
/usr/local/sbin/rabbitmq-defaults
/usr/local/sbin/rabbitmq-env
/usr/local/sbin/rabbitmq-plugins
/usr/local/sbin/rabbitmq-server
3. 启动:
/usr/local/sbin/rabbitmq-server start &
默认监听端口5672
如果提示:
ERROR: epmd error for host "$hostname": address (unable to establish tcp connection)
我的hostname叫dataserver1,一开始我看错了,以为是database1 我就奇怪这东西还有连接数据库,浪费了20分钟百度。
把hostname名称添加到 /etc/hosts的127.0.0.1 那行的最后面
4. 安装插件管理界面
mkdir -m 777 /etc/rabbitmq/
rabbitmq-plugins enable rabbitmq_management
重启rabbitmq-server
rabbitmqctl stop
rabbitmq-server start &
查看管理端口有没有启动:
netstat -tnlp|grep 55672
浏览器打开http://IP:55672/mgmt/ 账号密码都是guest
5. 安装php插件
RabbitMQ 官方提供了三种 PHP 可用的扩展,分别是:
php-amqp
http://code.google.com/p/php-amqp/
php-rabbit
http://code.google.com/p/php-rabbit/
php-amqplib
http://code.google.com/p/php-amqplib/
这里只测试amqp和rabbit插件的安装
5.1 php-amqp插件:
//安装simplejson
wget http://pypi.python.org/packages/source/s/simplejson/simplejson-2.6.1.tar.gz
tar zxvf simplejson-2.6.1.tar.gz
cd simplejson-2.6.1
python setup.py build
python setup.py install
cd ..
//安装rabbitmq
wget http://hg.rabbitmq.com/rabbitmq-c/archive/ce1eaceaee94.tar.gz -O rabbitmq-c.tar.gz
wget http://hg.rabbitmq.com/rabbitmq-codegen/archive/c7c5876a05bb.tar.gz -O rabbitmq-codegen.tar.gz
tar zxvf rabbitmq-c.tar.gz
tar zxvf rabbitmq-codegen.tar.gz
cp -a rabbitmq-codegen-c7c5876a05bb rabbitmq-c-ce1eaceaee94/codegen
cp -a rabbitmq-codegen-c7c5876a05bb /codegen //复制到根目录,不然编译会出错
cd rabbitmq-c-ce1eaceaee94
autoreconf -i
./configure && make && make install
cd ..
//下载php-amqp
wget ‘http://php-amqp.googlecode.com/files/amqp-0.0.7.tgz’
wget ‘http://php-amqp.googlecode.com/issues/attachment?aid=-1144008813478455001&name=issue2.patch2&token=MIAWwjCHrtsxZfuFTs_-JORHod4%3A1346297990942’ //path补丁,不然编译不过去
tar zxvf amqp-0.0.7.tgz
patch -d amqp-0.0.7 < issue2.patch2
cd amqp-0.0.7
./configure --with-php-config=/usr/local/php/bin/php-config --with-amqp
make
make install
vi /usr/local/php/etc/php.ini
添加
extension = amqp.so
验证:
/usr/local/php/bin/php -m | grep amqp
重启php或者apache
5.2 php-rabbit插件:
//安装simplejson
wget http://pypi.python.org/packages/source/s/simplejson/simplejson-2.6.1.tar.gz
tar zxvf simplejson-2.6.1.tar.gz
cd simplejson-2.6.1
python setup.py build
python setup.py install
cd ..
//安装rabbitmq
wget http://hg.rabbitmq.com/rabbitmq-c/archive/ce1eaceaee94.tar.gz -O rabbitmq-c.tar.gz
wget http://hg.rabbitmq.com/rabbitmq-codegen/archive/c7c5876a05bb.tar.gz -O rabbitmq-codegen.tar.gz
tar zxvf rabbitmq-c.tar.gz
tar zxvf rabbitmq-codegen.tar.gz
cp -a rabbitmq-codegen-c7c5876a05bb rabbitmq-c-ce1eaceaee94/codegen
cp -a rabbitmq-codegen-c7c5876a05bb /codegen //复制到根目录,不然编译会出错
cd rabbitmq-c-ce1eaceaee94
autoreconf -i
./configure && make && make install
cd ..
//安装php-rabbit插件
wget http://php-rabbit.googlecode.com/files/php-rabbit.r91.tar.gz
tar zxvf php-rabbit.r91.tar.gz
cd php-rabbit
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-rabbit
make && make install
vi /usr/local/php/etc/php.ini
添加
extension = rabbit.so
验证:
/usr/local/php/bin/php -m | grep rabbit
重启php或者apache
6. 测试php连接rabbitMQ (使用 amqp 模式)
测试代码:(马玉福提供)
cat test.php
<?php
/**
* producer demo
*
* @author wei
* @version $Id$
**/
$params = array('host' =>'192.168.41.141',
'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 < 20; $i++) {
$res = $exchange->publish($i . 'msg', 'wei.' . $i);
if ($res) {
echo $i . 'msg' . " Yes\n";
} else {
echo $i . 'msg' . " No\n";
}
}
?>
执行 /usr/local/php/bin/php test.php
如果返回:
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/5730/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2012-11-6 10:58
评论列表