一:RabbitMQ简介
AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。
AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
二:工作过程
发布者(Publisher)发布消息(Message),经由交换机(Exchange)。
交换机根据路由规则将收到的消息分发给与该交换机绑定的队列(Queue)。
最后 AMQP 代理会将消息投递给订阅了此队列的消费者,或者消费者按照需求自行获取。
三:Windows下安装rabbitmq
Rabbit MQ 是建立在Erlang OTP平台上,所以在安装rabbitMQ之前,需要先安装Erlang ,下载地址为http://www.erlang.org/downloads
1.下载完成后,双击进行安装
2.安装完成之后创建一个名为ERLANG_HOME的环境变量,其值指向erlang的安装目录
3.将%ERLANG_HOME%\bin加入到Path中
4.检查erl是否安装成功
打开cmd,输入erl
如上图所示出现erlang的版本信息就表示erlang语言环境安装成功;
5.然后下载并安装Rabbitmq,下载地址为:http://www.rabbitmq.com/download.html
下载好之后,双击进行安装
选择自己的安装目录,我的安装目录是E:\Develop\rabbitmq,默认安装的RabbitMQ 监听端口是5672,默认用户名:guest,密码:guest。
6.RabbitMQ-Plugins插件安装
这个插件相当于是一个管理界面,方便我们在浏览器界面查看RabbitMQ各个消息队列以及exchange的工作情况,安装方法是:打开命令行cmd进入rabbitmq的sbin目录(我的目录是:E:\Develop\rabbitmq\rabbitmq_server-3.8.5\sbin),输入:
rabbitmq-plugins enable rabbitmq_management
稍等会出现plugins安装成功的提示
然后重启服务,使用命令(此时最后以管理员运行CMD):
net stop RabbitMQ && net start RabbitMQ
插件安装完之后,在浏览器输入http://localhost:15672进行验证
完成上面所有步骤,那么在Windows系统安装rabbitmq就已经完成
四:Linux系统安装rabbitmq(rpm安装包方式,因为rabbitmq与erlang版本不匹配导致无法启动)
1.和Windos系统安装rabbitmq一样,由于RabbitMQ依赖Erlang, 所以需要先安装Erlang,Erlang的安装方式大概有两种:
- 从Erlang Solution安装(此方式安装的erlang版本较高,和下文教程中rabbitMQ的版本不一致,建议安装高版本的rabbitMQ)
# 添加erlang solutions源
$ wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
$ sudo rpm -Uvh erlang-solutions-1.0-1.noarch.rpm --force --nodeps
$ sudo yum install erlang
- 从EPEL源安装(此方式安装的Erlang版本可能不是最新的,有时候不能满足RabbitMQ需要的最低版本)
# 启动EPEL源
$ sudo yum install epel-release
# 安装erlang
$ sudo yum install erlang
2.安装RabbitMQ
- 先下载rpm
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.15/rabbitmq-server-3.6.15-1.el7.noarch.rpm
-
下载完成后安装
yum install rabbitmq-server-3.6.15-1.el7.noarch.rpm
- 安装时如果遇到下面的依赖错误
Error: Package: socat-1.7.2.3-1.el6.x86_64 (epel)
Requires: libreadline.so.5()(64bit)
- 可以尝试先执行
$ sudo yum install socat
3.关于RabbitMQ的一些基本操作
$ sudo chkconfig rabbitmq-server on # 添加开机启动RabbitMQ服务
$ sudo /sbin/service rabbitmq-server start # 启动服务
$ sudo /sbin/service rabbitmq-server status # 查看服务状态
$ sudo /sbin/service rabbitmq-server stop # 停止服务
# 查看当前所有用户
$ sudo rabbitmqctl list_users
# 查看默认guest用户的权限
$ sudo rabbitmqctl list_user_permissions guest
# 由于RabbitMQ默认的账号用户名和密码都是guest。为了安全起见, 先删掉默认用户
$ sudo rabbitmqctl delete_user guest
# 添加新用户
$ sudo rabbitmqctl add_user username password
# 设置用户tag
$ sudo rabbitmqctl set_user_tags username administrator
# 赋予用户默认vhost的全部操作权限
$ sudo rabbitmqctl set_permissions -p / username ".*" ".*" ".*"
# 查看用户的权限
$ sudo rabbitmqctl list_user_permissions username
4.开启web管理接口
如果只从命令行操作RabbitMQ,多少有点不方便。幸好RabbitMQ自带了web管理界面,只需要启动插件便可以使用。
然后通过浏览器访问http://localhost:15672,输入用户名和密码访问web管理界面。
5.配置RabbitMQ并启动服务端
- 因为是用rpm包安装,可从默认docs目录复制配置文件样例:
cp /usr/share/doc/rabbitmq-server-3.6.15/rabbitmq.config.example /etc/rabbitmq.config
- ##也可以自己创建一个rabbitmq.config文件,然后加入下面配置允许除本机外的其他地址访问rabbitmq
[{rabbit, [{loopback_users, []}]}].
- 启动rabbitmq服务端,发现启动rabbitmq报错,
报错原因就是erlang版本与rabbitmq不匹配,所以我下面卸载掉rabbitmq相关安装包,不再使用rpm包安装,而是换成压缩包安装。
7、卸载rabbitmq相关
- 卸载前先停掉rabbitmq服务,执行命令
$ service rabbitmq-server stop
- 查看rabbitmq安装的相关列表
$ yum list | grep rabbitmq
- 卸载rabbitmq已安装的相关内容
$ yum -y remove rabbitmq-server.noarch
8、卸载erlang
- 查看erlang安装的相关列表
$ yum list | grep erlang
- 卸载erlang已安装的相关内容
$ yum -y remove erlang-*
$ yum -y remove erlang.x86_64
五、Linux系统安装rabbitmq(tar包的方式)
1.安装erlang
- 安装rabbitmq依赖类库
yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget gtk2-devel binutils-devel
- 打开rabbitmq对应erlang版本地址:https://www.rabbitmq.com/which-erlang.html,选择下载相互匹配的erlang和rabbitmq的安装包
wget http://erlang.org/download/otp_src_23.0.tar.gz 下载速度可能会很慢
- 解压
tar -zxvf otp_src_23.0.tar.gz
- 移走
mv otp_src_23.0 /usr/local/
- 切换目录
cd /usr/local/otp_src_23.0/
- 创建即将安装的目录
mkdir ../erlang
- 配置安装路径
./configure --prefix=/usr/local/erlang
- 如果遇到这个错 你就假装没看到
- 安装erl
make install
ll /usr/local/erlang/bin
- 添加并刷新环境变量
echo ‘export PATH=$PATH:/usr/local/erlang/bin‘ >> /etc/profile
source /etc/profile
- 检查是否安装成功
erl
如果出现下图所示版本号则表示安装成功
在里面输入halt().命令退出来(那个点号别忘记)
2.安装RabbitMQ
rabbitmq下载地址:
https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.8.5
- 下载
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.5/rabbitmq-server-generic-unix-3.8.5.tar.xz
- 由于是tar.xz格式的所以需要用到xz,没有的话就先安装
yum install -y xz
- 第一次解压
/bin/xz -d rabbitmq-server-generic-unix-3.8.5.tar.xz
- 第二次解压
tar -zxvf rabbitmq-server-generic-unix-3.8.5.tar
- 改名
mv rabbitmq_server-3.8.5 rabbitmq
- 配置环境变量
echo ‘export PATH=$PATH:/home/rabbitmq/sbin‘ >> /etc/profile
- 刷新环境变量
source /etc/profile
- 创建配置目录
mkdir /etc/rabbitmq
3.启动、停止、查看状态
- 启动:
rabbitmq-server -detached
- 停止:
rabbitmqctl stop
- 查看状态:
rabbitmqctl status
4.开启RabbitMQ插件(web管理)
- 开启web插件
rabbitmq-plugins enable rabbitmq_management
- 访问:http://127.0.0.1:15672/
默认账号密码:guest guest(这个账号只允许本机访问)
5.用户管理
- 查看所有用户
rabbitmqctl list_users
- 添加一个用户
rabbitmqctl add_user raoyulu 123456
- 配置权限
rabbitmqctl set_permissions -p "/" raoyulu ".*" ".*" ".*"
- 查看用户权限
rabbitmqctl list_user_permissions raoyulu
- 设置tag
rabbitmqctl set_user_tags raoyulu administrator
- 删除用户(安全起见,删除默认用户)
rabbitmqctl delete_user guest
6.登陆
配置好用户之后重启一下rabbit
然后就可以用新账号进行登陆
六:使用docker容器安装rabbitmq
1.先在linux系统安装docker服务
安装教程链接地址:https://blog.csdn.net/gfk3009/article/details/104460438
2.拉取RabbitMQ镜像文件
执行命令:docker pull rabbitmq:management
3.运行rabbitmq
执行命令:docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 -v `pwd`/data:/var/lib/rabbitmq --hostname RabbitMQ rabbitmq:management ##启动容器
docker ps -a ## 查看容器是否启动成功
最后访问客户端确定是否启动成功