RabbitMQ简介
RabbitMQ是采用Erlang语言实现AMQP(高级消息队列协议)的消息中间件。
RabbitMQ的安装
这里所有的安装操作都是在Centos 7系统下进行的,RabbitMQ的安装方式其实有两种,一种是直接在Linux系统中安装,一种是在容器中安装,这里指Docker容器。对于一些简单的测试环境或者小型项目,我更愿意在Docker中安装使用,因为在Docker中安装更方便,容器帮我们做了很多工作。
Centos 7下安装RabbitMQ
以下的安装方式都是通过源码包的形式安装,当然也可以通过centos的yum源进行安装。
安装Erlang
从Erlang官网下载安装包: http://www.erlang.org/downloads
1 | [root@iz2zeaf3cg1099kiidi06mz ~]# tar xvf otp_src_21.0.tar.gz |
修改/etc/profile,添加环境变量:1
2
3ERLANG_HOME=/opt/erlang
export PATH=$PATH:$ERLANG_HOME/bin
export ERLANG_HOME
然后source /etc/profile使其生效
安装RabbitMQ
从RabbitMQ官网下载源码包: https://www.rabbitmq.com/download.html
官网也提供RPM(Linux下的软件包管理器)安装形式,详情参阅官网1
2
3
4
5[root@iz2zeaf3cg1099kiidi06mz ~]# tar xvf rabbitmq-server-generic-unix-3.6.15.tar.xz -C /opt
[root@iz2zeaf3cg1099kiidi06mz ~]# cd /opt
[root@iz2zeaf3cg1099kiidi06mz opt]# ls
erlang rabbitmq_server-3.6.15
[root@iz2zeaf3cg1099kiidi06mz opt]# mv rabbitmq_server-3.6.15 rabbitmq
修改/etc/profile,添加环境变量:1
2export PATH=$PATH:/opt/rabbitmq/sbin
export RABBITMQ_HOME=/opt/rabbitmq
1 | [root@iz2zeaf3cg1099kiidi06mz opt]# vi /etc/profile |
运行RabbitMQ
rabbitmq-server -detached 以守护进程的方式运行rabbitmq1
2[root@iz2zeaf3cg1099kiidi06mz opt]# rabbitmq-server -detached
Warning: PID file not written; -detached was passed.
rabbitmq status查看RabbiMQ是否运行成功1
2
3
4[root@iz2zeaf3cg1099kiidi06mz opt]# rabbitmqctl status
Status of node rabbit 2zeaf3cg1099kiidi06mz
[{pid,30300},
{running_applications,
开启WEB后台管理界面
1 | [root@iz2zeaf3cg1099kiidi06mz ~]# rabbitmq-plugins enable rabbitmq_management |
创建远程登录账号密码
由于rabbitmq的默认账号(账号guest,密码guest)具有全部权限,guest账号只允许在Localhost登录WEB界面,远程登录会失败,所以我们需要新建账号并设置相应权限
1. 查看当前用户列表1
2
3[root@iz2zeaf3cg1099kiidi06mz ~]# rabbitmqctl list_users;
Listing users
guest [administrator]
2. 新增一个用户
命令rabbitmqctl add_user {username} {password}
1 | [root@iz2zeaf3cg1099kiidi06mz ~]# rabbitmqctl add_user root root |
3. 设置用户角色
命令rabbitmqctl set_user_tags {username} {tag...}
1 | [root@iz2zeaf3cg1099kiidi06mz ~]# rabbitmqctl set_user_tags root administrator |
4. 设置用户权限
命令是rabbitmqctl set_permissions [-p vhost] {user}{conf}{write}{read}
。
而rabbitmq默认的虚拟主机host为”/“。当然也可以新建一个虚拟主机,命令为rabbitmqctl add_vhosts 虚拟主机名称
这里授予root用户访问虚拟主机 /,并在所有资源上都具备可配置,可写以及可读的权限
1 | [root@iz2zeaf3cg1099kiidi06mz ~]# rabbitmqctl set_permissions -p / root ".*" ".*" ".*" |
通过以上步骤之后,就可以通过自己设定的账号远程访问web管理界面了。
Docker中安装RabbitMQ
在Docker中安装RabbiMQ是很方便的,当前前提你得有Docker环境,至于Docker的安装这里就不介绍了,详情请参阅CentOS 安装 Docker
1. 拉取镜像
从官方下载镜像到本地,这里是带有web管理插件的镜像1
2[root@iz2zeaf3cg1099kiidi06mz ~]# docker pull rabbitmq:management
management: Pulling from library/rabbitmq
2. 运行镜像,创建rabbitmq容器1
2[root@iz2zeaf3cg1099kiidi06mz ~]# docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management
a190a7d8245d09eae9cdf8322ba7def2397b4dad12bdcf6200143ea3a3519920
参数说明:
- -d 表示后台进程运行
- –name: 指定容器名称
- -p: 映射主机端口到内部容器开发的网络端口
更多关于docker的参数说明,请参阅Docker — 从入门到实践
3. 访问web管理界面
但是这里发现一个问题,通过docker安装的rabbitmq并运行,可以直接使用默认账号远程访问。具体原因没查明白,猜测可能是容器的端口映射到主机的端口上,外网默认账号访问时让运行在容器中的rabbitmq以为是本地访问
实际上,在Docker中安装运行rabbitmq是非常快捷方便的,这有利于我们进行项目开发需要。
小结
以前也装过rabbitmq,实际项目也用过。当时没有去做笔记,写博客的习惯,以至于学过就像「白学」一样。现在从头开始,仔细去研究Rabbitmq。总结的过程就是成长的过程。