1、RabbitMq简介
RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。
AMQP :Advanced Message Queue,高级消息队列协议。它是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受产品、开发语言等条件的限制。
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。使用Erlang语言开发的开源消息队列系统。
简单来说是一套实现了高级消息队列协议的开源消息代理软件,就是一个消息中间件。是一种程序对程序的通信方法,用来保存消息和传递消息的一个容器。常见作用有三种,分别是服务间解耦、实现异步通信、流量削峰。
场景一:用户订单,库存处理。【服务间解耦】
景二:用户注册,发送手机短信、邮件。【实现异步通信】
异步通信是指通信过程中发送方和接收方没有同步的时序限制,即它们可以独立于对方进行操作。与同步通信不同的是,在同步通信中,必须等待另一端的响应才能继续执行其他任务。
同步通信较复杂,双方时钟的允许误差较小;异步通信简单,双方时钟可允许一定误差;
同步通信效率高,异步通信效率较低;
异步通信由于通信时间不受同步的限制,发送方和接收方可以分别选择最适合自己的速度,减少了通信时的延迟。发送方和接收方可以以不同的速度进行操作,提高了性能和吞吐量。
场景三:商品秒杀和抢购。【流量削峰】
2、队列(Queue)
队列是常用的数据结构之一,是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为对头。
3、消息队列(Message Queue)
消息:计算机/应用 间传送的数据单位,可以非常简单,例如只包含文本字符串,也可以很复杂,可能包含嵌入对象。
消息队列:在消息的传输过程中保存消息的容器
消息传输时,先发送到队列,队列的主要目的是提供路由并保证消息的传递,如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功的传递它。
可以把消息队列理解成快递公司,你需要寄一个物件(消息)给你的朋友,快递公司收到物件会保证物件送到你的朋友手中,可能存在多次寄送才送达成功的情况,比如第一次送过去,你朋友不在家
消息队列中间件是分布式系统中重要的组件
解决 应用耦合、异步消息、流量削锋 等问题
实现 高性能、高可用、可伸缩 和 最终一致性
4、下载
因为RabbitMQ是基于Erlang语言开发的,所以我们要先安装Erlang环境
这里通过官网下载需要的版本:https://www.rabbitmq.com/
进入官网向下拉,找到 Download + Installation 下载+安装,点击进入
在新页面找到右侧,Install Windows 安装windows版本
进入页面后,下拉页面,找到 Dependencies 依赖关系,下载Erlang安装包和rabbitmq安装包:
RabbitMQ 和 Erlang/OTP 版本要兼容,官方版本介绍如下:https://www.rabbitmq.com/which-erlang.html
下载Erlang安装包页面,选择跟你操作系统对应的版本:
5、安装Erlang
下载完成后,先安装otp_win64_24.3.exe。鼠标右键以管理员方式运行,接着选取要安装的路径,然后一路傻瓜式安装 next 下一步,安装即可。注意不要安装在中文的路径下。(确保安装路径没有中文字符,并且不要有空字符)
安装otp_win64_24.3完成后,配置系统环境变量,右键此电脑 - 属性 - 高级系统设置 - 环境变量。找到系统变量path,把otp安装的bin路径C:\Program Files\erl-24.3\bin\添加上即可。
6、安装RabbitMQ
找到RabbitMQ安装文件,右键管理员运行,然后选择安装路径,接着一路 next 下一步即可。注意不要安装在中文路径下。
安装完成后找到安装文件路径,找到 sbin 目录下,打开命令行cmd,在命令行里切换到sbin目录下,输入如下命令:rabbitmq-plugins enable rabbitmq_management
(下载可视化管理界面插件)
运行成功后,打开任务资源管理器,找到rabbitmq服务右键重新启动。或者也可以,双击sbin下的rabbitmq-server.bat(双击后稍等片刻)
安装完成后,通过浏览器访问RabbitMQ控制台http://localhost:15672
其中有几个默认值:
默认的端口号:5672
默认的用户是 guest guest
管理后台的默认端口号:15672
最上侧的导航以此是:概览、连接、信道、交换器、队列、用户管理
参考网址:https://zhuanlan.zhihu.com/p/515184963
如何完全卸载rabbitMQ
(1)打开Windows控制面板,双击“程序和功能”。
(2)在当前安装的程序列表中,右键单击RabbitMQ Server,然后单击“卸载”。
(3)在当前安装的程序列表中,右键单击“Erlang OTP”,然后单击“卸载”。
(4)打开Windows任务管理器。
(5)在任务管理器中,查找进程epmd.exe。 如果此进程仍在运行,请右键单击该进程,然后单击“结束进程”。
(6)删除RabbitMQ和Erlang的所有安装目录。
(7)删除文件C: Windows .erlang.cookie(如果存在)。
(8)转到用户文件夹:C: Users [username],然后删除文件.erlang.cookie。删除
(9)同样在User文件夹中,转到AppData Roaming RabbitMQ。删除RabbitMQ文件夹。
(10)打开运行cmd->sc delete RabbitMQ。
(11)打开运行->regedit 找到RabbitMQ节点,删掉即可。
相关命令
查看端口占用情况
netstat -ano | findstr :15672
#下载插件
rabbitmq-plugins.bat enable rabbitmq_management
#查看是否安装成功
rabbitmqctl.bat status
#如果查看报错,可能是后台服务器没有开启,开启后台服务器再重试
net start RabbitMQ
#查看RabbitMQ已有用户以及用户对应的角色信息
rabbitmqctl.bat list_users
#RabbitMQ的默认用户名和密码是guest,只能在本机访问,新增一个用户,并赋予超级管理员角色
rabbitmqctl add_user 用户名 密码
#设置用户角色
rabbitmqctl set_user_tags 用户名 administrator
打开cmd 输入rabbitmqctl status
当cmd出现Status of node 'rabbit@机器名'[{pid,19692}, {running_applications,{[{rabbit,"RabbitMQ","3.16.14"... 等打印出来的消息时则安装成功
常见报错
1、安装rabbit的时候出现rabbitmq-service.bat start exited with code 1
解决办法:
打开注册表,搜索计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Ericsson\Erlang
删除该选项后,以管理员方式打开cmd或者terminal,在rabbitmq安装目录sbin下运行rabbitmq-service.bat install
2、运行rabbit后
解决办法:
在C:\Users\19457\AppData\Roaming\RabbitMQ\log下的日志中的报错信息显示: error:{case_clause,version_not_available}
rabbitMQ和erlang的版本不兼容,参考网址https://www.rabbitmq.com/which-erlang.html