1、初始RabbitMQ
RabbitMQ是一個開源的消息代理和隊列服務器,用來通過普通協議在完全不同的應用之間共享數據,RabbitMQ是使用Erlang語言編寫的,並且RabbitMQ是基於AMQP協議的。
2、AMQP(高級消息隊列協議)
AMQP是具有現代特徵的二進制協議。是一個提供統一消息服務的應用層標準高級消息隊列協議,是應用層協議的一個開放標準,爲面向消息的中間件設計。
3、AMQP協議模型
4、AMQP核心概念
- server:又成Broker,接收客戶端的連接,實現AMQP實體服務
- Channel:網絡通道,幾乎所有的操作都在Channel中進行,Channel是進行消息讀寫的通道。客戶端可建立多個Channel,每個Channel代表一個會話任務。
- Message:消息,服務器和應用程序之間傳送的數據,由Properties和Body組成。Properties可以對消息進行修飾,比如消息的優先級、延遲等高級特性;Body則就是消息體內容。
- Virtual host:虛擬地址,用於進行邏輯隔離,最上層的消息路由。一個Virtual Host裏面可以有若干個Exchange和Queue,同一個Virtual Host裏面不能有相同名稱的Exchange和Queue。
- Exchange:交換機,接收消息,根據路由鍵轉發消息到綁定的隊列。
- Binding:Exchange和Queue之間的虛擬連接,binding中可以包含routing key。
- Routing Key:一個路由規則,虛擬機可用它來確定如何路由一個特定消息。
- Queue:也稱爲Message Queue,消息隊列,保存消息並將它們轉發給消費者。