这几天和几个小伙伴写活动平台的项目 有消息通知的功能需求 故学习一下RabbitMQ
一、RabbitMQ是什么?
RabbitMQ是流行的开源消息队列系统,是AMQP(Advanced Message Queuing Protocol高级消息队列协议)的标准实现,用erlang语言开发。RabbitMQ据说具有良好的性能和时效性,同时还能够非常好的支持集群和负载部署,非常适合在较大规模的分布式系统中使用。
二、RabbitMQ安装步骤
由于RabbitMQ是基于Erlang(面向高并发的语言)语言开发,所以在安装RabbitMQ之前,需要先安装Erlang
1、安装Erlang和socat(失败安装)
我们安装最新版本的Erlang到服务器中。 Erlang在默认的YUM存储库中不可用,因此需要安装EPEL存储库。
1 | # 先执行第一个命令安装EPEL存储库 |
安装完之后看看版本
1 | [root@iZ8vbguck7zxavr5aco6knZ ~]# erl -version |
2、安装RabbitMQ
1 | [root@iZ8vbguck7zxavr5aco6knZ RabbitMQ]# ls |
执行安装程序,这里发生了错误,由于安装的rabbitmq需要的erlang版本得 >= 21.3,而我们是 5.10.4,故erlang得重新安装
1 | [root@iZ8vbguck7zxavr5aco6knZ RabbitMQ]# yum install rabbitmq-server-3.8.9-1.el7.noarch.rpm |
3、重新安装Erlang和socat(又一次失败了)
接下来我们使用脚本更新yum存储库,以下命令均不会有提示消息
1 | # 导入将从2018年12月1日(GMT)开始使用的新PackageCloud密钥 |
然后发现更新yum存储库以后安装erlang时没有安装包,没办法,apm安装包安装吧!官网下载
1 | [root@iZ8vbguck7zxavr5aco6knZ RabbitMQ]# sudo yum install erlang-22.2.1-1.el7.x86_64 |
有可能下载比较慢,需要科学上网
1 | [root@iZ8vbguck7zxavr5aco6knZ RabbitMQ]# ls |
开始安装前准备
解压
1 | tar -xzvf otp_src_23.1.tar.gz |
创建安装目录
1 | mkdir /opt/erlang_23.1 |
安装各种依赖
1 | yum -y install gcc-c++ |
1 | yum -y install ncurses-devel |
1 | yum -y install openssl |
1 | yum -y install openssl-devel |
1 | yum -y install unixODBC-devel |
进入otp_src_23.1进行configure,会有警告,忽略即可
1 | [root@iZ8vbguck7zxavr5aco6knZ otp_src_23.1]# ./configure --prefix=/opt/erlang_23.1/ |
现在就可以进行安装啦!
1 | make && make install |
然鹅装好以后,配置环境变量之后,还是老版本
1 | [root@iZ8vbguck7zxavr5aco6knZ RabbitMQ]# erl -version |
4、彻底卸载erlang
首先直接删除安装文件
1 | rm -rf /opt/erlang_23.1 |
然后执行下面三条命令,基本就可以删除了
1 | [root@iZ8vbguck7zxavr5aco6knZ RabbitMQ]# yum list | grep erlang |
5、最后试试官方的方法(成功安装最新erlang)
官方的方法,先创建一个文件
1 | vim /etc/yum.repos.d/rabbitmq-erlang.repo |
在其中添加以下内容
1 | # In /etc/yum.repos.d/rabbitmq_erlang.repo |
执行安装命令,安装之前先update一下yum
1 | yum update -y |
6、安装RabbitMQ
rpm安装即可
1 | [root@iZ8vbguck7zxavr5aco6knZ RabbitMQ]# rpm -ivh rabbitmq-server-3.7.28-1.el7.noarch.rpm |
默认安装完成后配置文件模板在:/usr/share/doc/rabbitmq-server-3.7.28/rabbitmq.config.example目录中,需要将配置文件复制到/etc/rabbitmq/目录中,并修改名称为rabbitmq.config
1 | cp /usr/share/doc/rabbitmq-server-3.7.28/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config |
至此,安装完成!!!
三、RabbitMQ基本使用
启动RabbitMQ的服务
1 | systemctl start rabbitmq-server |
停止RabbitMQ的服务
1 | systemctl stop rabbitmq-server |
重启RabbitMQ的服务
1 | systemctl restart rabbitmq-server |
查看RabbitMQ服务状态
1 | systemctl status rabbitmq-server |
插件管理命令
1 | rabbitmq-plugins enable|list|disable |
在浏览器访问 http://ip:15672/ ,会出现以下界面,记得要开放15672端口,或者关闭防火墙
通过此用户进入系统 username: guest password: guest
四、RabbitMQ彻底删除
依次执行下面三条语句
1 | # 停止RabbitMQ |
找出所有文件,赶尽杀绝,在根目录下执行下面这条语句(切记!!!)找出来后后依次删除即可
1 | find / -name rabbit* |
五、总结
折腾了快一天,写几个点防止后人踩雷吧
- erlang 和 rabbitMQ 的版本一定要对应,如之前我使用 23.1的erlang 和 3.7.28 的RabbitMQ ,结果 RabbitMQ 不能启动
- 我目前安装的最新的版本如 3.8.9 的 RabbitMQ 安装以后 /usr/share/doc/rabbitmq-server-3.8.9/ 下没有配置模板文件
- yum 安装的 erlang 版本一般都比较低,可以去看看官方教程安装最新版
- erlang 和 rabbitMQ 的版本一定要对应!!!切记!!!具体可以去 rabbitMQ 官网查看