當前位置:
首頁 > 最新 > RabbitMQ基本概念

RabbitMQ基本概念

伺服器 broker

消息伺服器。


集群 cluster

多台broker組成的整體。RabbitMQ集群並非為了嚴格的可伸縮性。隊列在沒有使用高可用策略(HA)時會存在某一節點上,生產者往其他節點上的生產的消息會被轉發到隊列所在節點。所以如果為了實現嚴格意義的伸縮性擴展,建議使用多個單機模式的broker。cluster能夠更好的為自帶的HA服務。


消息發送者。


生產者發布消息的行為。


消息接收者。

消費者訂閱某一隊列,來消費隊列中的消息。


存儲消息。你可以把隊列想像成寄信過程中對方的郵箱。


生產者需要傳遞給消費者的信息。你可以把消息想像成要寄出的信。


應用程序與伺服器之間的TCP連接。


TCP連接中的虛機連接。


Advanced Message Queuing Protocol,是一個消息協議,RabbitMQ是它的一個實現。


AMQP協議中規定,消息被發布到Exchange,然後交換機根據一定的規則分發消息的副本到隊列。你可以把Exchange想像為郵局。你需要把信(消息)投遞到郵局。交換機有很多類型,將在其他文章介紹,本文將只是簡略介紹。


隊列和交換機之間的連接。你可以把綁定想像為郵局到對方的路徑。


路由鍵是交換機用來決定消息要投遞到哪個隊列的所需要的信息。你可以想像為信封上的地址,郵局通過這個地址選擇路徑。


RabbitMQ是多用戶系統。通過不同的用戶名密碼和許可權來區分應用。

用於隔離不同應用的環境。vhost是獨立的環境。


消息的屬性。


消費者在消費時發送ack給伺服器,告知消費完成,伺服器刪除消息。


消費者告知伺服器消費失敗。此時消費者可選擇是否重新投遞消息到隊列。reject只能拒絕一條消息,nack可以拒絕多條消息。


這是一個生產行為的設置,生產者發布消息到交換機時,如果無法到達任何一個隊列,消息會返回給生產者。


當消息無法被路由,或者消費者拒絕(reject/nack)並且requeue為false,或者消息TTL過期,或者隊列達到最大長度,也就是在消息準備丟棄前,可以配置隊列的x-dead-letter-exchange屬性這些將要丟棄的消息到另外的exchange(DLX),並可以設置x-dead-letter-routing-key定義重新投遞的路由鍵(DLK)。


當消息無法被路由時,發布消息到指定交換機。通過在交換機上設置alternate-exchange屬性來實現。


過期的消息或者被丟棄,或者進入死信隊列。通常採用TTL和死信隊列機制實現定時隊列。對於隊列,可通過設置x-message-ttl來規定消息的存活時間。


通常用來描述交換機和隊列。耐久的意味著如果伺服器重啟不會丟失,重啟之後會恢復。


通常用來描述消息。在消息發布時,當delivery_mode使用persistent(值為2)時,消息在服務重啟之後才不會丟失。但這會降低性能。只有當交換機、隊列、消息都是持久的,消息才不會丟失。

交換機的一種。通過完全匹配binding和routing key來投遞消息。


交換機的一種。忽略binding和routing key,投遞消息到交換機下的所有隊列。通常用於實現廣播。


交換機的一種。類似正則匹配。用*匹配一個word,#匹配0個或多個words。


交換機的一種。不常用且不推薦使用。通過消息header匹配。比如可以使用匹配多個header屬性來路由消息。x-match用來表達需要匹配多少才能路由,值為any/all。


隊列只能被一個連接使用,並且連接斷開後會被刪除。


一種屬性。對於隊列來說,當隊列的最後一個消費者不再訂閱隊列後,隊列被刪除。對於交換機來說,當最後一個隊列也不再綁定交換機的時候,交換機被刪除。


對於隊列,通過x-expires可以設置隊列多久未使用後自動刪除。


交換機設置此屬性後,只能被用於交換機與交換機的綁定。


以amq.開頭的隊列都是RabbitMQ內部交換機。通常用來實現沒有規定exchange的場景,比如直接發送消息到隊列(AMQP中是只能發往交換機的)就是通過默認交換機(amq.default)實現的(它的名字是「」,綁定到所有隊列,binding為隊列的名字)。


消費者在確認之前可以一次性接收的消息數量。過大或者過小的prefetch值都會導致問題。prefetch如何選擇將在其他文章介紹。

支持消息優先順序的隊列,優先順序隊列不是先進先出(FIFO)的。


設置隊列的最大優先順序數字。如果不設置,隊列就不是優先順序隊列。


分別通過x-max-length和x-max-length-bytes限制隊列長度。長度過大經常會導致內存問題,最大長度是一種保護機制。


這是一個用來反映消費者工作狀態的指標。通常100%的利用率說明消費者進程在很好地工作,隊列不會出現堆積。如果此值太小,說明消費者可能有異常,或者消費速度遠遠趕不上生產速度。


用來動態配置一些策略,如高可用,隊列和交換機的屬性等。


消息將被存儲在磁碟而不是內存,適合那些不及時消費的消息的隊列。


又稱裂腦,分區等。是指集群由於網路原因被分成幾個能夠獨立運行的部分,不同部分各自認為對方宕機,從而不能構成一個整體,不能保證數據一致性。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!

TAG: |