RabbitMQ和AMQP協議簡介(RabbitMQ學習筆記 1)

一、RabbitMQ簡介

RabbitMQ是一個開源的消息代理和隊列服務器,用來通過普通協議在完全不同的應用之間共享數據,RabbitMQ是使用Erlang語言來編寫的,並且RabbitMQ是基於AMQP協議的。

1.1 RabbitMQ的優勢

  1. 開源、性能優秀,穩定性保障
  2. 提供可靠性消息投遞模式(confirm)、返回模式(return)
  3. 與SpringAMQP完美的整合、API豐富
  4. 集羣模式豐富,表達式配置,HA模式,鏡像隊列模型
  5. 保證數據不丟失的前提做到高可靠性、可用性

二、AMQP協議

2.1 AMQP簡介

AMQP全稱:Advanced Message Queuing Protocol 也就是高級消息隊列協議的意思。
AMQP協議模型如下圖所示:消息生產者將消息投遞到Exchange中,Exchange將消息轉發到相應的隊列中。消費者只需要監聽Message Queue消息隊列即可。
在這裏插入圖片描述

2.2 AMQP核心概念

Server: MQ服務器又稱Broker,用於接收客戶端的連接,實現AMQP實體服務。
Connection: 應用程序和Broker建立網絡連接
Channel: 網絡信道,幾乎所有的操作都在Channel中進行,Channel是進行消息讀寫的通道。客戶端可建立多個Channel,每個Channel代表一個會話任務。
Message: 消息,服務器和應用程序之間傳送的數據,由Properties和Body組成。Properties可以對消息進行設置,比如消息的優先級、延遲等高級特性;Body就是消息體內容。
Virtual host: 虛擬主機,用於進行邏輯隔離,最上層的消息路由,將不同的服務劃分開。一個Virtual Host裏面可以有若干個Exchange和Queue,同一個Virtual Host 裏面不能有相同名稱的Exchange或Queue(注: 這裏解釋一下邏輯隔離,如果你接觸過redis就應該知道,redis中默認劃分了16個數據庫,db0—db15。如果總共的內存空間是16G,那麼這16G並不是平均分配給一個數據庫的,你可以只利用一個數據庫去使用全部的16G內存空間。所以這16個數據庫只是在邏輯上被區分開,並沒有在物理空間上進行劃分。)
Exchange: 交換機,接收消息,根據路由鍵轉發消息到綁定的隊列。
Binding: Exchange和Queue之間的虛擬連接,binding中可以包含routing key
Routing key: 路由鍵,一個路由規則,Exchange可用它來確定如何路由一個信息到指定的隊列
Queue: 也就是Message Queue,消息隊列,保存消息並將它們轉發給消費者

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章