1. 简介
消息队列(MQ)的使用可以提高系统效率,实现系统组件间的解耦,使得系统不再受制于缓慢的业务流程,从而提高用户的体验。
一个典型的场景,在电商项目中下订单的情况,用户希望立刻得知订单是否添加成功,因此系统必须立刻返回结果,但订单添加业务需要进行入库操作,众所周知,入库操作要进行磁盘I/O,而磁盘I/O是耗时的,尤其是在高并发的情况下,系统响应缓慢,这时可以使用消息队列,将待入库的订单信息发送到消息队列,立即告知用户处理成功,独立的组件从消息队列中有条不紊地取出订单信息,将其保存到数据库。这样使得各组件异步运行,提升了系统效率,给用户以更好的体验。
目前业界有许多优秀的 MQ 产品,RabbitMQ 就是其中之一。RabbitMQ 是一个开源的、基于 Erlang 语言的、支持多种流行语言(如 JAVA,Python,PHP 等)的消息中间件。
2. 单机安装
作者使用 CentOS 7 系统,并保证可以访问外网,因为要在线下载安装包,并使用 yum 安装。
最好修改一下主机名,比如修改为 rabbit01
hostnamectl set-hostname rabbit01 #永久修改
2.1 安装 Erlang。因为 RabbitMQ 时基于 Erlang 语言的,因此需要安装 Erlang 环境
#创建目录存放下载的 rpm 安装包
mkdir /home/rabbit
#切换到 /home/rabbit 目录
cd /home/rabbit
#yum 安装 epel-release,此时会去下载安装包,下载完成后会提示确认安装 Is this ok [y/d/N],输入 y 回车开始安装,看到 Complete! 提示时安装成功。
yum install epel-release
#安装 Erlang 环境,这个过程可能需要一段时间。看到 Complete! 提示时安装成功
yum install erlang
2.2 安装 RabbitMQ
#下载 RabbitMQ-3.6.10 安装包
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.10/rabbitmq-server-3.6.10-1.el7.noarch.rpm
#开始安装,当看到 Complete! 提示时,安装完成
yum install rabbitmq-server-3.6.10-1.el7.noarch.rpm
3.启动/关闭 RabbitMQ 服务
3.1 启动 RabbitMQ 服务
systemctl start rabbitmq-server #或 rabbitmq-server -detached
3.2 查看 RabbitMQ 状态
systemctl status rabbitmq-server #或 rabbitctl status
3.3 停止 RabbitMQ 服务
systemctl stop rabbitmq-server #或 rabbitmqctl stop
3.4 验证安装成功,服务正常启动
#查看状态,如下图,则 RabbitMQ 服务已启动
systemctl status rabbitmq-server
#RabbitMQ 默认占用 5672 端口,如果启用了 WEB 管理界面插件,还将占用 15672 端口
lsof -i:5672 #查看指定端口是否被占用,看到如下图结果,5672 端口已被占用
关于如何使用 WEB 界面管理 RabbitMQ,请查看《RabbitMQ 3.6.10 的 WEB 管理界面》
4. 参考
[1]《CentOS7上安装RabbitMQ》http://blog.csdn.net/luxingsoftware/article/details/54378809
[2]《为什么要使用消息队列》 http://www.cnblogs.com/rader/archive/2012/06/26/2563369.html