RabbitMQ安装和配置

最近要写一个python的小项目其中涉及了很多系统,需要各个系统之间进行通信,查了一些资料,请教了一些人,最终选用了RabbitMQ
测试环境:CentOS7,root账户
1.更新系统

yum -y update &&  yum  -y upgrade

2.安装所需要的依赖环境

yum -y install gcc   make wget xmlto perl ncurses-devel zip unzip

3.安装Erlang语言环境,这里选择源代码安装
1).下载Erlang源代码

cd /tmp/ && wget http://erlang.org/download/otp_src_17.1.tar.gz && tar -zxvf otp_src_17.1.tar.gz

2).编译安装

cd /tmp/otp_src_17.1 && bash configure && make && make install

3).测试erl是否可用

whereis erl

会显示

erl: /usr/local/bin/erl

4.安装RabbitMQ
1).下载RabbitMQ

cd /tmp/ && wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.3.4/rabbitmq-server-3.3.4.tar.gz

2).解压

cd /tmp/ && tar -zxvf rabbitmq-server-3.3.4.tar.gz && cd rabbitmq-server-3.3.4.tar.gz

3).make

cd /tmp/rabbitmq-server-3.3.4 && make TARGET_DIR=/usr/rabbitmq3.3.4 SBIN_DIR=/usr/rabbitmq3.3.4/sbin MAN_DIR=/usr/rabbitmq3.3.4/man DOC_INSTALL_DIR=/usr/rabbitmq3.3.4/doc

4).make install

cd /tmp/rabbitmq-server-3.3.4 && make TARGET_DIR=/usr/rabbitmq3.3.4 SBIN_DIR=/usr/rabbitmq3.3.4/sbin MAN_DIR=/usr/rabbitmq3.3.4/man DOC_INSTALL_DIR=/usr/rabbitmq3.3.4/doc  install

5.后续工作

echo "export PATH=\$PATH:/usr/rabbitmq/sbin" >> /etc/profile
source /etc/profile

或者这个操作

ln -s /usr/rabbitmq3.3.4/ /usr/rabbitmq
ln -s /usr/rabbitmq/sbin/rabbitmq-server /usr/sbin/
ln -s /usr/rabbitmq/sbin/rabbitmq-plugins /usr/sbin/
ln -s /usr/rabbitmq/sbin/rabbitmqctl /usr/sbin/
ln -s /usr/rabbitmq3.3.4/sbin/rabbitmq-env /usr/sbin/

6.配置
1).开启web管理

rabbitmq-plugins enable rabbitmq_management 

如果提示

Error: {cannot_write_enabled_plugins_file,”/etc/rabbitmq/enabled_plugins”,
enoent}
则进行如下操作

mkdir /etc/rabbitmq/

打开浏览器访问http://{ip}:15672
7.管理
1). 服务器启动与关闭
启动服务

nohup rabbitmq-server >>/dev/null &
#或者rabbitmq-server –detached

关闭服务

rabbitmqctl stop

注意:单机有多个实例,则在rabbitmqctlh后加–n 指定名称
2). 插件管理
开启某个插件:rabbitmq-pluginsenable xxx
关闭某个插件:rabbitmq-pluginsdisablexxx
注意:重启服务器后生效。
3).virtual_host管理
新建virtual_host: rabbitmqctl add_vhost xxx
撤销virtual_host:rabbitmqctl delete_vhost xxx
4). 用户管理
RabbitMQ的用户角色分类:
none、management、policymaker、monitoring、administrator
RabbitMQ各类角色描述:
none
不能访问 management plugin
management
用户可以通过AMQP做的任何事外加:
列出自己可以通过AMQP登入的virtual hosts
查看自己的virtual hosts中的queues, exchanges 和 bindings
查看和关闭自己的channels 和 connections
查看有关自己的virtual hosts的“全局”的统计信息,包含其他用户在这些virtual hosts中的活动。
policymaker
management可以做的任何事外加:
查看、创建和删除自己的virtual hosts所属的policies和parameters
monitoring
management可以做的任何事外加:
列出所有virtual hosts,包括他们不能登录的virtual hosts
查看其他用户的connections和channels
查看节点级别的数据如clustering和memory使用情况
查看真正的关于所有virtual hosts的全局的统计信息
administrator
policymaker和monitoring可以做的任何事外加:
创建和删除virtual hosts
查看、创建和删除users
查看创建和删除permissions
关闭其他用户的connections
用户操作
新建用户:rabbitmqctl add_user user_admin passwd_admin
删除用户: rabbitmqctl delete_user xxx
列出用户:rabbitmqctl list_users
改密码: rabbimqctl change_password {username} {newpassword}
设置用户角色:rabbitmqctl set_user_tags {username} {tag ...}
Tag可以为 administrator,monitoring, management
eg.
赋予其administrator角色rabbitmqctl set_user_tags user_admin administrator
创建RabbitMQ监控用户,负责整个MQ的监控rabbitmqctl add_user user_monitoring passwd_monitor
赋予其monitoring角色:rabbitmqctl set_user_tags user_monitoring monitoring
5). 权限管理
权限设置:rabbitmqctl set_permissions [-p vhostpath] {user} {conf} {write} {read}
Vhostpath Vhost路径
user 用户名
Conf 一个正则表达式match哪些配置资源能够被该用户访问。
Write 一个正则表达式match哪些配置资源能够被该用户读。
Read 一个正则表达式match哪些配置资源能够被该用户访问。
权限查看rabbitmqctl list_user_permissions {username}
如查看guets权限:rabbitmqctl list_user_permissions guest
6). 获取服务器状态信息
服务器状态:rabbitmqctl status
队列信息:rabbitmqctl list_queues[-p vhostpath] [queueinfoitem ...]
Queueinfoitem可以为:name,durable,auto_delete,arguments,messages_ready,
messages_unacknowledged,messages,consumers,memory
Exchange信息:rabbitmqctl list_exchanges [-p vhostpath] [exchangeinfoitem ...]
Exchangeinfoitem有:name,type,durable,auto_delete,internal,arguments.
Binding信息:rabbitmqctl list_bindings [-p vhostpath] [bindinginfoitem ...]
Bindinginfoitem有:source_name,source_kind,destination_name,destination_kind,routing_key,arguments
Connection信息:rabbitmqctl list_connections [connectioninfoitem ...]
Connectioninfoitem有:recv_oct,recv_cnt,send_oct,send_cnt,send_pend等。
Channel信息:rabbitmqctl list_channels [channelinfoitem ...]
Channelinfoitem有consumer_count,messages_unacknowledged,messages_uncommitted,acks_uncommitted,messages_unconfirmed,prefetch_count,client_flow_blocked

8.配置文件

一般情况下,RabbitMQ的默认配置就足够了。如果希望特殊设置的话,有两个途径:
一个是环境变量的配置文件 rabbitmq-env.conf ;
一个是配置信息的配置文件 rabbitmq.config;
注意,这两个文件默认是没有的,如果需要必须自己创建。
rabbitmq-env.conf
这个文件的位置是确定和不能改变的,位于:/etc/rabbitmq目录下(这个目录需要自己创建)。
文件的内容包括了RabbitMQ的一些环境变量,常用的有:

RABBITMQ_NODE_PORT= //端口号
HOSTNAME=
RABBITMQ_NODENAME=mq
RABBITMQ_CONFIG_FILE= //配置文件的路径
RABBITMQ_MNESIA_BASE=/rabbitmq/data //需要使用的MNESIA数据库的路径
RABBITMQ_LOG_BASE=/rabbitmq/log //log的路径
RABBITMQ_PLUGINS_DIR=/rabbitmq/plugins //插件的路径

具体的列表见:http://www.rabbitmq.com/configure.html#define-environment-variables

rabbitmq.config
这是一个标准的erlang配置文件。它必须符合erlang配置文件的标准。
它既有默认的目录,也可以在rabbitmq-env.conf文件中配置。

文件的内容详见:http://www.rabbitmq.com/configure.html#config-items

附录:自己写了一个Dockerfile 感觉没有docker hub上的好。特意把docker hub上的链接发一下,如果机器上安装的docker可以直接pull下来
链接https://github.com/docker-library/rabbitmq

docker pull  rabbitmq

启动

docker run -d -p 4369:4369 --name=rabbitmq -p 5671:5671 -p 5672:5672 -p 25672:25672 rabbitmq

带有web管理的rabbitmq

docker pull rabbitmq:management 

运行

docker run -d -p 4369:4369 -p 5671:5671 -p 5672:5672 -p 25672:25672 -p 15671:15671 -p 15672:15672 --restart=always --name rabbitmq rabbitmq:management

参考:http://blog.csdn.net/mlks_2008/article/details/18988301
http://blog.csdn.net/zyz511919766/article/details/42292655
http://www.cnblogs.com/astroboyx/archive/2012/04/09/2739902.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值