RabbitMq
一.RabbitMQ概念
1.1.基本概念
- MQ全称为Message Queue,即消息队列. 它也是一个队列,遵循FIFO原则.
- RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue Protocol高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开 发中应用非常广泛。
- RabbitMQ是基于AMQP协议实现一种Mq
1.2.RabbitMQ使用场景
- 1、提高系统响应速度
任务异步处理。将不需要同步处理的并且耗时长的操作由消息队列通知消息接收方进行异步处理。提高了应用程序的响应时间。 - 2、提高系统稳定性
系统挂了关系,操作内容放到消息队列. - 3、异步化
- 4、解耦
应用程序解耦合 MQ相当于一个中介,生产方通过MQ与消费方交互,它将应用程序进行解耦合。 - 5、排序保证 FIFO
秒杀 - 6、消除峰值
异步化提速(发消息),提高系统稳定性(多系统调用),服务解耦(5-10个服务),排序保证,消除峰值
1.3.常见的消息队列
- ActiveMQ
- RabbitMQ
- ZeroMQ
- Kafka
- MetaMQ
- RocketMQ
- Redis
二、RabbitMQ的原理
2.1.原理图
2.2.执行流程
组成部分说明如下:
Broker:消息队列服务进程,此进程包括两个部分:Exchange和Queue。
Exchange:消息队列交换机,按一定的规则将消息路由转发到某个队列,对消息进行过虑。
Queue:消息队列,存储消息的队列,消息到达队列并转发给指定的消费方。
Producer:消息生产者,即生产方客户端,生产方客户端将消息发送到MQ。
Consumer:消息消费者,即消费方客户端,接收MQ转发的消息。
消息发布接收流程:
-----发送消息-----
1、生产者和Broker建立TCP连接。
2、生产者和Broker建立通道。
3、生产者通过通道消息发送给Broker,由Exchange将消息进行转发。
4、Exchange将消息转发到指定的Queue(队列)
----接收消息-----
1、消费者和Broker建立TCP连接
2、消费者和Broker建立通道
3、消费者监听指定的Queue(队列)
4、当有消息到达Queue时Broker默认将消息推送给消费者。
5、消费者接收到消息。
三、安装RabbitMQ
RabbitMQ由Erlang语言开发,Erlang语言用于并发及分布式系统的开发,在电信领域应用广泛,OTP(Open Telecom Platform)作为Erlang语言的一部分,包含了很多基于Erlang开发的中间件及工具库,安装RabbitMQ需要安装Erlang/OTP,并保持版本匹配,如下图:
RabbitMQ的下载地址:http://www.rabbitmq.com/download.html
3.1.安装erlang语音
otp_win64_20.2.exe
3.2.配置erlang的环境变量
erlang安装完成需要配置erlang环境变量:
ERLANG_HOME=D:\Program Files\erl9.3 在path中添 加%ERLANG_HOME%\bin;
3.3.安装RabbitMQ
rabbitmq-server-3.7.4.exe
安装成功后会自动创建RabbitMQ服务并且启动。
从开始菜单启动RabbitMQ 完成在开始菜单找到RabbitMQ的菜单
RabbitMQ Service-install:安装服务
RabbitMQ Service-remove:删除服务
RabbitMQ Service-start:启动
RabbitMQ Service-stop:停止
如果没有开始菜单则进入安装目录下sbin目录手动启动:
3.4.安装RabbitMQ的可视化插件
进入mq地 安装目录的sbin目录,
cmd执行 rabbitmq-plugins.bat enable rabbitmq_management
3.5.访问测试
http://localhost:15672 账号 : guest/guest
注意:
1、安装erlang和rabbitMQ以管理员身份运行。
2、当卸载重新安装时会出现RabbitMQ服务注册失败,此时需要进入注册表清理erlang 搜索RabbitMQ、ErlSrv,将对应的项全部删除。