MQ简介
简单释义
消息总线(Message Queue),是一种跨进程、异步的通信机制,用于上下游传递消息。由消息系统来确保消息的可靠传递。
背景描述
当前市面上mq的产品很多,比如RabbitMQ、Kafka、ActiveMQ、ZeroMQ和阿里巴巴捐献给Apache的RocketMQ。甚至连redis这种NoSQL都支持MQ的功能。
适用场景
- 上下游逻辑解耦&&物理解耦
- 保证数据最终一致性
- 广播
- 错峰流控等等
RabbitMQ的特点
RabbitMQ是由Erlang语言开发的AMQP的开源实现。
AMQP:Advanced Message Queue,高级消息队列协议。它是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受产品、开发语言灯条件的限制。
- 可靠性(Reliablity):使用了一些机制来保证可靠性,比如持久化、传输确认、发布确认。
- 灵活的路由(Flexible
Routing):在消息进入队列之前,通过Exchange来路由消息。对于典型的路由功能,Rabbit已经提供了一些内置的Exchange来实现。针对更复杂的路由功能,可以将多个Exchange绑定在一起,也通过插件机制实现自己的Exchange。 - 消息集群(Clustering):多个RabbitMQ服务器可以组成一个集群,形成一个逻辑Broker。
- 高可用(Highly Avaliable Queues):队列可以在集群中的机器上进行镜像,使得在部分节点出问题的情况下队列仍然可用。
- 多种协议(Multi-protocol):支持多种消息队列协议,如STOMP、MQTT等。
- 多种语言客户端(Many Clients):几乎支持所有常用语言,比如Java、.NET、Ruby等。
- 管理界面(Management UI):提供了易用的用户界面,使得用户可以监控和管理消息Broker的许多方面。
- 跟踪机制(Tracing):如果消息异常,RabbitMQ提供了消息的跟踪机制,使用者可以找出发生了什么。
- 插件机制(Plugin System):提供了许多插件,来从多方面进行扩展,也可以编辑自己的插件。
几种工作模式:(后续再补上)
下载
第一步:下载并安装erlang
-
原因:RabbitMQ服务端代码是使用并发式语言Erlang编写的,安装Rabbit MQ的前提是安装Erlang。
-
下载地址:http://www.erlang.org/downloads
根据情况下载
-
双击下载好的安装包
-
傻瓜式next
-
选择安装路径继续傻瓜next
-
安装完事之后,配置一下环境变量
-
此电脑–>鼠标右键“属性”–>高级系统设置–>环境变量–>“新建”系统环境变量
-
然后双击系统变量path
-
点击“新建”,将%ERLANG_HOME%\bin加入到path中。
-
最后windows键+R键,输入cmd,再输入erl,看到版本号就说明erlang安装成功了。
第二步:下载并安装RabbitMQ
- 下载地址(打开会慢一些):http://www.rabbitmq.com/download.html
- 下载完事和安装也是傻瓜next。
- RabbitMQ安装好后接下来安装RabbitMQ-Plugins,打开命令行cd,输入RabbitMQ的sbin目录。
- 我的目录是:D:\develop\rabbitmq\rabbitmq_server-3.11.3\sbin
- 然后在后面输入以下命令安装
rabbitmq-plugins enable rabbitmq_management
-
成功提示
-
然后再执行:rabbitmq-server.bat
-
成功提示
-
rabbitmq启动成功,浏览器中http://localhost:15672,
-
如果运行出现问题。
ERROR: node with name "rabbit" is already running on host "DESKTOP-PS0LS6E"
- 这个是因为rabbit已经启动了,不能再次启动,通过tasklist指令,发现进程是存在的。
tasklist | find /i "erl"
- 然后执行 (需要以管理员运行cmd,杀死erl的进程,或者任务管理器找到erl结束)。
taskkill /pid xxxx -f
-然后再次执行一下命令即可。
rabbitmq-server.bat
- 访问 http://localhost:15672
- 输入guest,guest进入rabbitMQ管理控制台