前言
本以为两三天就能搞定这篇文章,现在才知道是我想的太天真了,从构思到整理资料差不多用了一个星期的时间,现在也是终于搞定了。
我看很多人都说想要一份系统化的学习路线,现在它终于来了!!!整个路线概括了目前一线互联网企业主流的应用技术,从点到面一应俱全,带着大家看看,我们需要学些啥,我甚至还收集配套视频和资料供大家学习。
基础知识
RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,它是使用Erlang
语言来编写的,并且是基于AMQP
协议的;
RabbitMQ高性能的原因
- Erlang语言在交换机的交互方面性能优秀的(
Erlang
语言最初在于交换机领域的架构模式,这样使得RabbitMQ在Broker之间进行数据交互的性能是非常优秀的) - Erlang有着和原生
Socket
一样的延迟
AMQP协议
什么是AMQP高级消息队列协议
AMQP(Advanced Message Queueing Protocol)定义:具有现代特征的二进制协议。是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计
AMQP协议模型:
Publisher 推送消息前先与Server建立连接,找到Virtual host
,然后将消息推送至Exchange交换机。而交换机与Message Queue
有绑定关系(一个交换机相当于一个独立的虚拟机,而这个虚拟机内的各种独立的应用就相当于一个Queue,这个Queue与交换机绑定),Consumer
通过绑定的对队列,而交换机也绑定了队列。发送者将消息发送给交换机,这样就能完成消息的推送了
整体架构图
基本概念
Broker
消息队列服务进程,接收客户端的连接,实现AMQP实体服务。
Connection
连接,应用程序与Broker
的网络连接。
Producer
消息生产者,即生产方客户端,生产方客户端将消息发送到MQ。
Consumer
消息消费者,即消费方客户端,接收MQ转发的消息。
Channel
网络信道,几乎所有的操作都在Channel
中进行,Channel是进行消息读写的通道。客户端可建立多个Channel,每个Channel代表一个会话任务
Message
消息,服务器和应用程序之间传送的数据,由Properties
和Body组成。Properties可以对消息进行修饰,比如消息的优先级、延迟等高级特性;Body则就是消息体内容。
Virtual Host
虚拟地址,用于进行逻辑