(二)rabbit mq 基本概念介紹

一:簡介
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。

 

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