年后刚上班这几天有点清闲,有时间要赶快利用,去年我们有一个项目要将视频传到YouTube上,上传成功后YouTube有一个自动截图的功能,截取视频图片后国外的一台服务器上的程序就会调用国内的一台服务器上的接口然后将图片传过来进行更新数据,原来的实现方式就是通过HttpClient连接接口传输数据实现的,这样会有很大问题,我想大家都知道如果在数据传输的过程中国内服务器上的服务进行了从新启动那么就会造成数据丢失或者数据传输过来后服务器挂了但是数据还没有消费也是一样的,所以我们才采用了消息队列来解决这一问题,原来我只会在LINUX上安装并且简单的应用但是不懂原理,现在我想是时候深入了解了
一 Rabbit的安装
1、安装erlang(官网地址http://www.erlang.org )
rabbitmq是erlang语言编写的,我们要安装erlang语言环境
# mkdir mq
# cd mq/
# wget http://www.erlang.org/download/otp_src_R15B01.tar.gz
# tar -zxvf otp_src_R15B01.tar.gz
# cd otp_src_R15B01
# yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
# ./configure --prefix=/usr/local/erlang --enable-hipe --enable-threads --enable-smp-support --enable-kernel-poll
# make;make install
配置环境
# vim /etc/profile
ERL_HOME=/usr/local/erlang
PATH=$ERL_HOME/bin:$PATH
export ERL_HOME PATH
# source /etc/profile
然后输入erl,出现erlang shell
2、安装rabbitmq
#wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.0.1/rabbitmq-server-3.0.1.tar.gz
#tar xzvf rabbitmq-server-3.0.1.tar.gz
#cd rabbitmq-server-3.0.1
#sudo make TARGET_DIR=/usr/local SBIN_DIR=/usr/local/sbin MAN_DIR=/usr/local/man install
如果报"/bin/sh: line 1: xmlto: command not found"错误,执行"yum -y install xmlto".
3、安装web插件
# mkdir /etc/rabbitmq/
# rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:
mochiweb
webmachine
rabbitmq_mochiweb
amqp_client
rabbitmq_management_agent
rabbitmq_management
Plugin configuration has changed. Restart RabbitMQ for changes to take effect.
4、启动服务
# rabbitmq-server start &
5、页面验证
http://service-ip:55672
到此已经安装成功,可以进行简单的应用了
管理
Rabbitmq服务器的主要通过rabbitmqctl和rabbimq-plugins两个工具来管理,以下是一些常用功能。
1. 服务器启动与关闭
启动: rabbitmq-server –detached
关闭:rabbitmqctl stop
若单机有多个实例,则在rabbitmqctlh后加–n 指定名称
2. 插件管理
开启某个插件:rabbitmq-plugins enable xxx
关闭某个插件:rabbitmq-plugins disablexxx
注意:重启服务器后生效。
3. virtual_host管理
新建virtual_host: rabbitmqctl add_vhost xxx
撤销virtual_host:rabbitmqctl delete_vhost xxx
4. 用户管理
新建用户:rabbitmqctl add_user xxx pwd
删除用户: rabbitmqctl delete_user xxx
改密码: rabbimqctl change_password {username} {newpassword}
设置用户角色:rabbitmqctl set_user_tags {username} {tag ...}
Tag可以为 administrator, monitoring, management
Tag |
Capabilities |
(None) |
No access to the management plugin |
management |
Anything the user could do via AMQP plus: List virtual hosts to which they can log in via AMQP View all queues, exchanges and bindings in "their" virtual hosts View and close their own channels and connections View "global" statistics covering all their virtual hosts, including activity by other users within them |
monitoring |
Everything "management" can plus: List all virtual hosts, including ones they could not log in to via AMQP View other users's connections and channels View node-level data such as memory use and clustering View truly global statistics for all virtual hosts |
administrator |
Everything "monitoring" can plus: Create and delete virtual hosts View, create and delete users View, create and delete permissions Close other users's connections |
5. 权限管理
权限设置:set_permissions [-p vhostpath] {user} {conf} {write} {read}
Vhostpath
Vhost路径
user