PHP RabbitMQ 配置以及使用

本文主要介绍vm 虚拟机linux centos下安装,
CentOS Linux release 7.2.1511 (Core)
php环境PHP 7.0.7 (cli) (built: Sep  5 2016 16:43:59) ( NTS )

依赖包安装

yum install ncurses-devel unixODBC unixODBC-devel

erlang环境

wget http://erlang.org/download/otp_src_18.1.tar.gz
tar -zxvf otp_src_18.1.tar.gz
cd otp_src_18.1
./configure –prefix=/usr/local/erlang
make
make install
# 配置erlang环境变量
vim /etc/profile
# 增加内容:
export PATH=”$PATH:/usr/local/erlang/bin”
# 保存退出,并刷新变量
source /etc/profile
# 测试erlang是否安装成功
# 安装完成以后,执行erl看是否能打开eshell,用’halt().’退出,注意后面的点号,那是erlang的结束符。
[root@localhost src]# erl

halt(). 退出或者直接Ctrl+C

安装rabbitmq依赖文件,安装rabbitmq

# 安装rabbitmq依赖包
yum install xmlto

# 安装rabbitmq服务端
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.7/rabbitmq-server-3.5.7.tar.gz
tar -zxvf rabbitmq-server-3.5.7.tar.gz
cd rabbitmq-server-3.5.7/
make
make install TARGET_DIR=/usr/local/rabbitmq SBIN_DIR=/usr/local/rabbitmq/sbin MAN_DIR=/usr/local/rabbitmq/man DOC_INSTALL_DIR=/usr/local/rabbitmq/doc

# 配置hosts
vim /etc/hosts
# 增加一行内容
# 当前IP地址   绑定HOSTNAME名称(vim /etc/sysconfig/network)
192.168.115.128 localhost.localdomain

rabbitmq启动 查看状态 关闭 命令

/usr/local/rabbitmq/sbin/rabbitmq-server start & 启动rabbitmq
/usr/local/rabbitmq/sbin/rabbitmqctl status 查看状态
/usr/local/rabbitmq/sbin/rabbitmqctl stop 关闭rabbitmq

启用管理插件

/usr/local/rabbitmq/sbin/rabbitmq-plugins list 查看插件列表
/usr/local/rabbitmq/sbin/rabbitmq-plugins enable rabbitmq_management  (启用插件)
/usr/local/rabbitmq/sbin/rabbitmq-plugins disable rabbitmq_management (禁用插件)

配置可视化RabbitMQ管理界面

/usr/local/rabbitmq/sbin/rabbitmq-plugins enable rabbitmq_management,这样就可以添加可视化插件了。

查看可视化插件是否成功:

由于guest用户只能本机(localhost或127.0.0.1)访问,所以在linux上的还需要配置添加一个其他的用户名,以及对该用户名进行授权,才可以用web 的方式进行访问。

在web浏览器中,输入自己的ip地址和端口号访问,如:http://192.168.115.128:15672/

输入账号: admin  密码: admin

就可以登录查看rabbitmq里的资源信息。

这里可以先简单的输入以下的命令,添加admin用户,及对admin用户进行授权,使其可以用web的方式进行访问。

[root@iZ23x0cj5yiZ ~]# rabbitmqctl add_user admin admin

[root@iZ23x0cj5yiZ ~]# rabbitmqctl set_user_tags admin administrator

[root@iZ23x0cj5yiZ ~]# rabbitmqctl set_permissions -p / admin ‘.*’ ‘.*’ ‘.*’

[root@iZ23x0cj5yiZ ~]# rabbitmqctl list_permissions

添加admin用户及授权之后,就可以用ip的形式进行访问了。

# 如果有iptables
vim /etc/sysconfig/iptables

# 增加一下内容
-A INPUT -m state –state NEW -m tcp -p tcp –dport 15672 -j ACCEPT

# 重启动iptable
service iptables restart

开机自启动配置

#!/bin/sh
#start rabbitMq
sudo /usr/local/rabbitmq/sbin/rabbitmq-server & > /usr/local/rabbitmq/logs/rabbitmq.log 2>&1

相关配置

hostname mq        // 设置hostname名称,直接linux运行吧

RabbitMQ PHP扩展安装

# 安装rabbitmq-c依赖包
yum install libtool autoconf

# 安装rabbitmq-c ( 最好下载 0.5的,0.6安装可能会报错)
# 版本下载:https://github.com/alanxz/rabbitmq-c/releases/tag/v0.5.0
wget https://github.com/alanxz/rabbitmq-c/releases/download/v0.5.0/rabbitmq-c-0.5.0.tar.gz
tar -zxvf v0.5.0
cd rabbitmq-c-0.5.0/
autoreconf -i
./configure –prefix=/usr/local/rabbitmq-c
make
make install

# 安装PHP扩展 amqp
wget http://pecl.php.net/get/amqp-1.9.3.tgz
tar -zxvf amqp-1.9.3.tgz
cd amqp-1.9.3
/usr/local/php/bin/phpize
./configure –with-php-config=/usr/local/php/bin/php-config –with-amqp –with-librabbitmq-dir=/usr/local/rabbitmq-c
make
make install

# 编辑php.ini文件,增加amqp扩展支持
vim /usr/local/php/etc/php.ini
# 增加下面内容
extension=amqp.so
# 重启php-fpm
/etc/init.d/php-fpm restart

查看phpinfo

 

 

 

 

 

创建配置文件(看其他介绍忽略这两个配置)

#创建配置文件
#config文件路径/usr/local/rabbitmq/sbin/rabbitmq.config
#vm_memory_high_watermark 内存低水位线,若低于该水位线,则开启流控机制,阻止所有请求,默认值是0.4,即内存总量的40%,
#vm_memory_high_watermark_paging_ratio 内存低水位线的多少百分比开始通过写入磁盘文件来释放内存

vi /usr/rabbitmq/sbin/rabbitmq.config 添加

[
{rabbit, [{vm_memory_high_watermark_paging_ratio, 0.75},
{vm_memory_high_watermark, 0.7}]}
].

#创建环境文件
cat /usr/local/rabbitmq/sbin/rabbitmq-defaults
#查看conf配置地址
#我的是 CONF_ENV_FILE=${SYS_PREFIX}/etc/rabbitmq/rabbitmq-env.conf
[这里修改配置文件的时候,建议先关闭rabbitmq /usr/local/rabbitmq/sbin/rabbitmqctl stop]
cd /etc
mkdir rabbitmq
vi /etc/rabbitmq/rabbitmq-env.conf
#输入
RABBITMQ_NODENAME=Test-240088 #节点名称
RABBITMQ_NODE_IP_ADDRESS=127.0.0.1 #监听IP
RABBITMQ_NODE_PORT=5672 #监听端口

#启动

/usr/local/rabbitmq/sbin/rabbitmq-server start &

【以下php测试脚本,可以cli执行也可以直接浏览器,其中host根据实际情况修改】
php的server端脚本
<?php
$routingkey=’testkey’;
//设置你的连接
$conn_args = array(‘host’ => ‘localhost’, ‘port’ => ‘5672’, ‘login’ => ‘guest’, ‘password’ => ‘guest’);
$conn = new AMQPConnection($conn_args);

if ($conn->connect()) {
echo “connect  success \n”;
}
else {
echo “Cannot connect to the amqp\n “;
}
//创建channel
$channel = new AMQPChannel($conn);
//创建exchange
$ex = new AMQPExchange($channel);
$ex->setName(‘exchangetest’);//创建名字
$ex->setType(AMQP_EX_TYPE_DIRECT);
$ex->setFlags(AMQP_DURABLE);
echo “exchangetest status:”.$ex->declareExchange();
echo “\n”;
for($i=0;$i<10;$i++){
$ex->publish(json_encode(array(‘This is Message ‘.$i)),$routingkey);
}
php客户端脚本
<?php
$bindingkey=’testkey’;
//连接RabbitMQ
$conn_args = array( ‘host’=>’localhost’ , ‘port’=> ‘5672’, ‘login’=>’guest’ , ‘password’=> ‘guest’,’vhost’ =>’/’);
$conn = new AMQPConnection($conn_args);
if ($conn->connect()) {
echo “connect  success \n”;
}
else {
echo “Cannot connect to the amqp\n “;
}
//设置queue名称,使用exchange,绑定routingkey
$channel = new AMQPChannel($conn);
$q = new AMQPQueue($channel);
$q->setName(‘queuetest’);
$q->setFlags(AMQP_DURABLE);
$q->declare();
$q->bind(‘exchangetest’,$bindingkey);
//消息获取
$messages = $q->get(AMQP_AUTOACK) ;
if ($messages){
var_dump(json_decode($messages->getBody(), true ));

//没运行一次就会获取新的消息
}
$conn->disconnect();

发表评论