# vim /etc/hosts 127.0.0.1 <hostname> # hostname <hostname> apt-get install rabbitmq-server /etc/init.d/rabbitmq-server start cd /usr/lib/rabbitmq/bin ./rabbitmq-plugins enable rabbitmq_management /etc/init.d/rabbitmq-server restart http://10.10.20.50:55672/ account name :guest password :guest
技巧
必须掌握的命令:
添加用户: rabbitmqctl add_user rainbird password 添加权限: rabbitmqctl set_permissions -p "/" rainbird ".*" ".*" ".*" 删除测试用户: rabbitmqctl delete_user guest 所有指令列表(很简单的英文): add_user <UserName> <Password> delete_user <UserName> change_password <UserName> <NewPassword> list_users add_vhost <VHostPath> delete_vhost <VHostPath> list_vhosts set_permissions [-p <VHostPath>] <UserName> <Regexp> <Regexp> <Regexp> clear_permissions [-p <VHostPath>] <UserName> list_permissions [-p <VHostPath>] list_user_permissions <UserName> list_queues [-p <VHostPath>] [<QueueInfoItem> ...] list_exchanges [-p <VHostPath>] [<ExchangeInfoItem> ...] list_bindings [-p <VHostPath>] list_connections [<ConnectionInfoItem> ...] vhost / 不能删除 删除/以后,新建立的vhost不能正常使用(即便不删除/,新建立的vhost也是不能正常使用).不知道为什么,有待研究. 持久化的后遗症 比如说你初始化了一个队列msgs.你会发现它真的持久了!每次服务器端重启后,通过list_queues命令查看的时候都存在. 但是时间久了,这个msgs我们并不需要了,怎么办呢?笔者发现,想清除这个队列只能删除它所在的vhost,然后再重建vhost,再设置vhost的权限. rabbitmqctl delete_vhost / rabbitmqctl add_vhost / rabbitmqctl set_permissions -p / rainbird '.*' '.*' '.*' 要注意,如果这个操作过程中有接收端处于连接状态它们不会自动断开,但也不会再收到消息,需要手动重新连接一下. 关于修改监听ip和监听端口 出于一些需要,比如我们有多个ip,我们希望rabbitmq仅运行在指定的ip上.或者考虑到安全问题,我们希望修改一下rabbitmq的监听端口.默认安装完成以后,在/etc下面会有一个rabbitmq的空目录,这时候我们需要手工创建rabbitmq.conf,并写入相关内容. vi /etc/rabbitmq/rabbitmq.conf RABBITMQ_NODE_IP_ADDRESS=0.0.0.0 RABBITMQ_NODE_PORT=2222 保存以后重启服务就生效了. 这个东东网上又没介绍,翻了半天+无限尝试才搞出来. 关于运行接收端cpu100%问题 第一眼看到接收端会运行一个while等待消息的时候,笔者就知道这个进程肯定cpu占用会100%.在代码里几处while尝试添加usleep无效后,笔者最后还是在官方的问题列表里找到了答案: vi +286 amqp_wire.inc 293 while ($read < $n && (false !== ($buf = fread($this->sock, $n - $read)))) 294 { 295 usleep(50000); 296 $read += strlen($buf); 297 $res .= $buf; 298 } 笔者的出发点是对的,只是没找对while.可能有人会奇怪为什么要用usleep(50000)呢?实际上笔者有遇到运行php起来的daemon导致cpu100%的情况.当时笔者加的是usleep(500000)也就是半秒钟.这样就可以使进程看上去cpu占用为0.没想到再降一个数量级也是可以正常的,这次算赚到了.