RabbitMQ的基本介绍
什么是AMQP
AMQP,即 Advanced Message Queuing Protocol(高级消息队列协议),是一个网络协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。
RabbitMQ中的相关概念
RabbitMQ最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。具有特点包括以下几个方面。
高可用(Reliability):RabbitMq使用一些机制来保证可靠性,如持久化,传输确认、发布确认等。
灵活路由(Flexible Routing):所有的消息要通过Exchange来进行路由处理,对于复杂路由也可以将多个Exchange绑定在一起使用。
消息集群(Clustering):RabbitMQ可以采用镜像集群的模式使消息的安全性于处理能力得到提升。
多种协议(Multi-protocol):RabbitMQ支持多种消息队列协议,如STOMP,MQTT等。
多语言客户端(Many Clients):RabbitMQ几乎支持所有常用语言,如Java、.NET、Ruby等。
管理界面(Management UI)):RabbitMQ提供用户管理界面,使开发者可以监控和管理消息。
跟踪机制(Tracing):RabbitMQ提供消息跟踪机制,方便拍拆消息异常
在RabbitMQ消息组件中提供如下的核心概念
Broker:消息队列服务主机。
Exchange:消息交换机,指定消息按什么规则、路由到哪个队列。
Queue:消息队列载体,每个消息都会被投入到一个或多个队列中。
Binding:绑定,把Exchange和Queue按照路由规则绑定起来。
RoutingKey:路由关键字,Exchange根据这个关键字进行消息投递
vhost:虚拟主机,一个broker可设多个vhost,实现用户权限分离。
producer:消息生产者。
consumer:消息消费者。
Channel:消息通道,在客户端的每个连接里可建立多个Channel,每个Channel代表一个会话任务。
RabbitMQ的6中工作模式
简单模式、work queues、Publish/Subscribe 发布与订阅模式、Routing 路由模式、Topics 主题模式、RPC 远程调用模式(远程调用,不太算 MQ;暂不作介绍)。