天天看點

RabbitMQ介紹和AMQP介紹介紹

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

是具有現代特征的二進制協定,是一個提供統一消息服務的應用層标準進階消息隊列協定,是應用層協定的一個開放标準,為面向消息的中間件設計。 是一個規範,定義了很多規範

RabbitMQ介紹和AMQP介紹介紹

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,消息隊列,儲存消息并将它們轉給消費者

RabbitMQ架構

RabbitMQ介紹和AMQP介紹介紹

RabbitMQ消息流轉

RabbitMQ介紹和AMQP介紹介紹