RabbitMQ介紹和AMQP介紹
- 介紹
-
- 選擇RabbitMQ原因
- RabbitMQ高性能的原因
- 什麼是AMQP進階消息隊列協定
- AMQP核心概念
- RabbitMQ架構
- RabbitMQ消息流轉
介紹
RabbitMQ是一個開源的消息代理和隊列伺服器,用來通過普通協定在完全不同的應用之間共享資料,RabbitMQ是使用Erlang語言編寫的,并且RabbitMQ是基于AMQP協定的。
選擇RabbitMQ原因
- 開源、性能優秀、穩定性保障
- 提供可靠性消息投遞模式(confirm)、傳回模式(return)
- 與SpringAMQP完美的整合、API豐富
- 叢集模式豐富,表達式配置,HA模式,鏡像隊列模型
- 抱枕資料不丢失的前提做到可靠性、可用性
RabbitMQ高性能的原因
主要原因是采用了Elang語言編寫。
Erlang語言最初在于交換機領域的架構模式,這樣是的RabbitMQ在Broker之間進行資料互動的性能是非常優秀的。
Erlang有着和原生Socket一樣的延遲效果
什麼是AMQP進階消息隊列協定
AMQP全稱是:Advanced Message Queuing Protocol
是具有現代特征的二進制協定,是一個提供統一消息服務的應用層标準進階消息隊列協定,是應用層協定的一個開放标準,為面向消息的中間件設計。 是一個規範,定義了很多規範

AMQP核心概念
- Server:又稱Broker,接受用戶端的連結,實作AMQP實體服務
- Connection:連接配接,應用程式與Broker的網絡連接配接
- 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,消息隊列,儲存消息并将它們轉給消費者