RabbitMQ,一款消息中间件。拥有:高可靠、易扩展、高可用及丰富的功能特性。
消息队列中间件,也可以称为消息队列或者消息中间件。
它一般有两种传递模式:点对点 ( P2P,
Point-to-Point
)模式和发布/订阅(
Pub/Sub
)模式。
点对点模式:是基于队列的,消息生产
者发送消息到队
列,消息消费者从队列中接收消息,队列的存在使得消息的异步传输成为可能。
发布订阅模式:定义了
如何向一
个内容节点发布和订阅消息,这个内容节点称为主题(
topic
),主
题可以认为是消息传递的中介,消息发布者将消息发布到某个主题,而消息订阅者则从主题中
订阅消息。主题使得消息的订阅者与消息的发布者互相保持独立,不需要进行接触即可保证消
息的传递,发布/订阅模式在消息的一对多广播时采用。
消息中间件的作用:
(1)解耦
(2)冗余(存储)
(3)扩展性
(4)削峰
(5)可恢复性
(6)顺序保证
(7)缓冲
(8)异步通信
RabbitMQ的具体特点包括以下几点:
(1)可靠性:RabbitMQ使用一些机制来保证可靠性,如持久化、传输确认及发布确认等。
(2)灵活的路由:在消息进入队列之前,通过交换器来路由消息。对于典型的路由功能,RabbitMQ已经提供了一些内置的交换器来实现。针对更复杂的路由功能,可以将多个交换器绑定在一起,也可以通过插件机制来实现自己的交换器。
(3)扩展性:多个RabbitMQ节点可以组成一个集群,也可以根据实际业务情况动态地扩展集群中节点
(4)高可用性:队列可以在集群中的机器上设置镜像,使得在部分节点出现问题的情况下队列仍然可用。
(5)多种协议:RabbitMQ除了原生支持AMQP协议,还支持STOMP、MQTT等各种消息中间件协议。
(6)多语言客户端:RabbitMQ几乎支持所有常用语言,比如:java、Python、Ruby、PHP、C#、javaScript等
(7)管理界面:RabbitMQ提供了一个易用的用户界面,使得用户可用监控和管理消息、集群中的节点等
(8)插件机制:RabbitMQ提供了许多插件,以实现从多方面进行扩展,当然也可以编写自己的插件。