概念
消息队列,先进先出的数据结构。消息发送者将消息发送到队列中,消息获取者从队列中获取消息。
消息队列的作用
应用解耦
降低各个服务之间的调用耦合关系。
流量消峰
将用户多余的流量放到消息队列中来处理,对于用户来说可能导致响应时间变长,但是不影响功能的使用。其实是用时间来换取服务的正常运行。
消息分发
消息生产者将消息发送到消息队列中,由消息队列来对消息进行分发管理,跟消息生产者就没有太大关系了,降低了对消息的维护管理,实现了消息分发。
异步消息
主要是用来解决请求调用之间的响应时间问题的,当核心业务流程的主请求发送完成时,就应该立即返回请求成功的提示,一些跟主业务流程不相关的其他附加请求就可以通过异步请求的方式来实现,不影响主请求的正常执行。
RabbitMQ消息队列部署
介绍
RabbitMQ是一个免费开源的、基于erlang语言、通过AMQP协议实现的消息队列。
注意: 安装部署的时候需要安装erlang语言的运行环境,erlang与RabbitMQ存在版本对应问题
RabbitMQ工作原理
组成部分说明:
Broker:消息队列服务进程,此进程包括两个部分:Exchange和Queue
Exchange:消息队列交换机,按一定的规则将消息路由转发到某个队列,对消息进行过虑。
Queue:消息队列,存储消息的队列,消息到达队列并转发给指定的
Producer:消息生产者,即生产方客户端,生产方客户端将消息发送
Consumer:消息消费者,即消费方客户端,接收MQ转发的消息。
生产者发送消息流程:
- 生产者和Broker建立TCP连接。
- 生产者和Broker建立通道。
- 生产者通过通道消息发送给Broker,由Exchange将消息进行转发。
- Exchange将消息转发到指定的Queue(队列)
消费者接收消息流程:
1、消费者和Broker建立TCP连接
2、消费者和Broker建立通道
3、消费者监听指定的Queue(队列)
4、当有消息到达Queue时Broker默认将消息推送给消费者。
5、消费者接收到消息。
6、ack回复
环境部署:
windows环境安装
1.安装arlang语言环境
2.安装RabbitMQ环境
Linux环境安装部署
1.下载Erlang的rpm包
RabbitMQ是Erlang语言编写,所以Erang环境必须要有,注:Erlang环境一定要与RabbitMQ版本匹配:https://www.rabbitmq.com/which-erlang.html
Erlang下载地址:https://www.rabbitmq.com/releases/erlang/(根据自身需求及匹配关系,下载对应rpm包)
2.下载RabbitMQ的rpm包
RabbitMQ下载地址:https://www.rabbitmq.com/releases/rabbitmq-server/(根据自身需求及匹配关系,下载对应rpm包)
3.下载socat的rpm包
rabbitmq安装依赖于socat,所以需要下载socat。
socat下载地址:http://repo.iotti.biz/CentOS/6/x86_64/socat-1.7.3.2-1.el6.lux.x86_64.rpm
4.分别安装Erlang、Socat、RabbitMQ(一定按照顺序!)
5.配置rabbitmq:vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app
RabbitMQ默认用户名和密码均为guest,guest账户在最新版本只能通过localhost登陆了,如果想要通过ip来登陆需要设置一下配置文件:
6.安装管理插件:rabbitmq-plugins enable rabbitmq_management
7.启动RabbitMQ