rabbitmq简介
-
AMQP,即advance message queuing protocol(高级消息队列协议),是一个网络协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。类比http。
-
rabbitqm采用erlang语言开发。基于与amqp标准开发的。
-
相关概念
exchange:message到达broker的第一站,根据分发规则,匹配查询表中的routing key,分发消息到queue中去,常用的类型有:direct(point-point),topic(publish-subscribe)and fanout(multicat)。
queue:消息最终被送到这里等待consumer取走。
binding:exchange和queue之间的虚拟连接,binding中可以包含routing key。binding信息被保存到exchange中的查询表中,用于message的分发依据。
-
rabbitmq的工作模式
简单模式、work queues、publish/subscribe发布与订阅模式、routing路由模式、topic主题模式、rpc远程调用模式(远程调用,不太算mq,暂不做介绍)。
-
JMS
JMS即java消息服务(java message service)应用程序接口,是一个java平台中关于面向消息中间件的api。
jms是javaee规范中的一种,类比jdbc。
-
rabbitmq的应用场景
异步处理、流量削峰、应用解耦
rabbitmq安装
window环境安装
rabbitmq是erlang语言开发的,rabbitmq安装需要先安装erlang,再安装rabbitmq;
-
安装包文件:
百度云:
链接:https://pan.baidu.com/s/1aiuBcBYgeyD33w3BRnfv5g
提取码:wpqj
官方网址:
erlang下载地址:https://hub.fastgit.org/rabbitmq/erlang-rpm/releases
rabbitmq下载地址:https://github.com/rabbitmq/rabbitmq-server/releases
rabbitmq与erlang两者之间需要版本相匹配才可以,安装包中的版本已经匹配。Erlang和RabbitMQ版本对照:https://www.rabbitmq.com/which-erlang.html
- erlang安装:
双击安装,更改安装路径(我这里安装到D盘),一直下一步即可完成安装。
1)erlang环境配置:
在系统变量中新建:
变量名:ERLANG_HOME,
变量值:D:\LenovoSoftstore\Install\Erlang OTP(路径根据安装位置填写)
在path中添加变量:%ERLANG_HOME%\bin
2)rabbit安装:
同样双击安装,选择安装位置,一直下一步即可。
安装完成后,打开命令行,位置转到rabbit安装路径下的sbin下。
输入:启动可视化插件:rabbitmq-plugins enable rabbitmq_management
启动rabbitMQ:rabbitmq-server.bat
查看状态:rabbitmqctl status
如无报错则安装成功。
rabbit相应命令:
常用命令
在rabbitmq的sbin目录下cmd
1、启动rabbitMQ:rabbitmq-server.bat
2、关闭:rabbitmqctl stop
3、查看状态:rabbitmqctl status
4、Rabbitmq 管理插件启动,可视化界面
启动:rabbitmq-plugins enable rabbitmq_management
关闭:rabbitmq-plugins disable rabbitmq_management
Linux环境安装
在安装选择:rabbitmq-server-3.8.30-1.el7.noarch.rpm、erlang-23.2.7-2.el7.x86_64.rpm
- 百度云:
链接:https://pan.baidu.com/s/1aiuBcBYgeyD33w3BRnfv5g
提取码:wpqj
-
将rabbitmq-server-3.8.30-1.el7.noarch.rpm、erlang-23.2.7-2.el7.x86_64.rpm两个文件上传到Linux系统上,我这里在usr/src下创建rabbitmq文件夹,将文件上传到该目录。
-
在RabiitMQ安装过程中需要依赖socat插件,首先安装该插件
yum install -y socat
-
解压、安装erlang
# 解压 rpm -Uvh erlang-23.2.7-2.el7.x86_64.rpm # yum安装(上述解压方式,忽略yum安装) yum install -y erlang
-
安装成功后,查看版本
# 查看版本 erl -v # 查看完成后,自动进入erlang命令行 #退出命令 halt().
-
解压安装rabbitMQ
# 解压 rpm -Uvh rabbitmq-server-3.8.30-1.el7.noarch.rpm # yum安装(上述解压方式,忽略yum安装) yum install -y rabbitmq-server
-
启动rabbitmq命令
# 启动rabbitmq 1. systemctl start rabbitmq-server 2. service rabbitmq-server start # 查看rabbitmq状态 systemctl status rabbitmq-server # 设置rabbitmq服务开机自启动 systemctl enable rabbitmq-server # 关闭rabbitmq服务 systemctl stop rabbitmq-server # 重启rabbitmq服务 systemctl restart rabbitmq-server
-
安装启动rabbitmqweb管理界面
# 打开RabbitMQWeb管理界面插件 rabbitmq-plugins enable rabbitmq_management
-
添加用户与密码
# 添加用户 rabbitmqctl add_user 用户名 密码 # 设置用户角色,分配操作权限 rabbitmqctl set_user_tags 用户名 角色 # 为用户添加资源权限(授予访问虚拟机根节点的所有权限) rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*" 权限角色: administrator:可以登录控制台、查看所有信息、并对rabbitmq进行管理 monToring:监控者;登录控制台,查看所有信息 policymaker:策略制定者;登录控制台指定策略 managment:普通管理员;登录控制 # 修改密码 rabbitmqctl change_ password 用户名 新密码 # 删除用户 rabbitmqctl delete_user 用户名 # 查看用户清单 rabbitmqctl list_users
-
防火墙开放端口
# 开放端口号:15672 firewall-cmd --zone=public --add-port=15672/tcp --permanent # 重启防火墙 firewall-cmd --reload