1. 程式人生 > >RabbitMQ入門教程(二):簡介和基本概念

RabbitMQ入門教程(二):簡介和基本概念

一:簡介

RabbitMQ是一個開源的AMQP實現,伺服器端用Erlang語言編寫,支援多種客戶端。用於在分散式系統中儲存轉發訊息,在易用性、擴充套件性、高可用性等方面表現不俗,訊息佇列是一種應用系統之間的通訊方法,是通過讀寫出入佇列的訊息來通訊(RPC則是通過直接呼叫彼此來通訊的)

AMQP(Advanced Message Queuing Protocol)高階訊息佇列協議是應用層協議的一個開放標準,為面向訊息的中介軟體設計。訊息中介軟體主要用於元件之間的解耦,訊息的傳送者無需知道訊息使用者的存在,反之亦然。AMQP的主要特徵是面向訊息、佇列、路由(包括點對點和釋出/訂閱)、可靠性、安全。

二:基本概念

  • ConnectionFactory(連線工廠): 生產Connection的的工廠

  • Connection(連線):是RabbitMQ的socket的長連結,它封裝了socket協議相關部分邏輯

  • Channel(頻道|通道): 是建立在Connection連線之上的一種輕量級的連線,我們大部分的業務操作是在Channel這個介面中完成的,包括定義佇列的宣告queueDeclare、交換機的宣告exchangeDeclare、佇列的繫結queueBind、釋出訊息basicPublish、消費訊息basicConsume等。如果把Connection比作一條光纖電纜的話,那麼Channel通道就比作成光纖電纜中的其中一束光纖。一個Connection上可以建立任意數量的Channel。
    這裡寫圖片描述

    這裡寫圖片描述

  • Producer(生產者):生產者用於釋出訊息

  • Exchange(交換機):生產者會將訊息傳送到交換機,然後交換機通過路由策略(規則)將訊息路由到匹配的佇列中去

  • Routing Key(路由鍵):一個String值,用於定義路由規則,在佇列繫結的時候需要指定路由鍵,在生產者釋出訊息的時候需要指定路由鍵,當訊息的路由鍵和佇列繫結的路由鍵匹配時,訊息就會發送到該佇列。

  • Queue(佇列):用於儲存訊息的容器,可以看成一個有序的陣列,生產者生產的訊息會發送到交換機中,最終交換機將訊息儲存到某個或某些佇列中,佇列可被消費者訂閱,消費者從訂閱的佇列中獲取訊息。

  • Binding(繫結): Binding並不是一個概念,而是一種操作,RabbitMQ中通過繫結,以路由鍵作為橋樑將Exchange與Queue關聯起來(Exchange—>Routing Key—>Queue),這樣RabbitMQ就知道如何正確地將訊息路由到指定的隊列了,通過queueBind方法將Exchange、Routing Key、Queue繫結起來

  • Consumer(消費者):用於從佇列中獲取訊息,消費者只需關注佇列即可,不需要關注交換機和路由鍵,消費者可以通過basicConsume(訂閱模式可以從佇列中一直持續的自動的接收訊息)或者basicGet(先訂閱訊息,然後獲取單條訊息,再然後取消訂閱,也就是說basicGet一次只能獲取一條訊息,如果還想再獲取下一條還要再次呼叫basicGet)來從佇列中獲取訊息

  • vhost(虛擬主機): RabbitMQ 通過虛擬主機(virtual host)來分發訊息, 擁有自己獨立的許可權控制,不同的vhost之間是隔離的,單獨的。vhost是許可權控制的基本單位,使用者只能訪問與之繫結的vhost,預設vhost:”/” ,預設使用者”guest” 密碼“guest”,來訪問預設的vhost。

下圖說明了生產者將訊息傳送到交換機中,然後又路由到指定的佇列中
這裡寫圖片描述

這裡寫圖片描述

我的微信公眾號: