RabbitMQ,基于AMQP协议实现。
特点:
消息可靠:持久化消息,传输确认,发布确认。
路由灵活:使用AMQP的Exchange来路由消息,包括RabbitMQ内置的Exchange,还有复杂的路由也可以使用多个Exchange绑定,定制实现。
支持集群:
高可用:
多协议:RabbitMQ除了支持AMQP协议,还可以通过插件的方式支持其他协议,比如STOMP,MQTT。
支持多语言客户端:
提供管理界面:
提供消息跟踪机制:如果消息异常,使用者可以查出发生了什么情况。
提供插件机制:可扩展
概念
RabbitMQ概念方面基本和AMQP协议的概念一样。
Message(消息):消息由消息头和消息体组成。消息体不透明,消息头由一系列可选属性组成,包括路由信息,消息优先级,消息是否持久化等。
Publisher(消息生产者):向交换器发布消息的客户端。
Consumer(消息消费者):从消息队列中取消息的客户端。
Exchange(交换器):接收生产者发出的消息,并路由给服务器中的队列。
Queue(消息队列):用来保存消息直到发送给消费者。
Binding(绑定):用于消息队列和交换器直接的关联。一个绑定就是一个路由规则。
Broker:队列服务器实体。
Connection(网络连接):比如一个TCP连接。
Channel(信道):独立的双向数据流通道,建立在真实的TCP连接内。发送消息和接收消息,都是通过信道完成的,引入信道也是因为建立和销毁TCP连接开销很昂贵,使用信道的概念复用TCP连接。
vhost(虚拟主机):一批交换器,消息队列和相关对象。缩小版的RabbitMQ服务器,必须在连接时指定。
如下图: