RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue Protocol)的开源实现。
1. 核心概念
-
Message
- 消息,消息是不具名的,它由消息头和消息体组成
- 消息头,包括routing-key(路由键)、priority(相对于其他消息的优先权)、delivery-mode(指出该消息可能需要持久性存储)等
-
Publisher
- 消息的生产者,也是一个向交换器发布消息的客户端应用程序
-
Exchange
- 交换器,将生产者消息路由给服务器中的队列
- 类型有direct(默认),fanout, topic, 和headers,具有不同转发策略
-
Queue
- 消息队列,保存消息直到发送给消费者
-
Binding
- 绑定,用于消息队列和交换器之间的关联
-
Connection
- 网络连接,比如一个TCP连接
-
Consumer
- 消息的消费者,表示一个从消息队列中取得消息的客户端应用程序
-
Virtual Host
- 虚拟主机,表示一批交换器、消息队列和相关对象。
- vhost 是 AMQP 概念的基础,必须在连接时指定
- RabbitMQ 默认的 vhost 是 /
-
Broker
- 消息队列服务器实体
2. 运行机制
消息路由
AMQP 中增加了Exchange 和 Binding 的角色, Binding 决定交换器的消息应该发送到那个队列
Exchange 类型