rabbitmq系列 一 基本概念理解

2022-03-05 02:08:03 字數 1450 閱讀 5639

rabbitmq是乙個由erlang開發的amqp(advanced message queue protocol)的開源實現。amqp高階訊息佇列,說白了就是乙個開源的訊息中介軟體。它能解決不同元件、模組、系統間訊息通訊。

rabbitmq server: 也叫broker server,儲存訊息的地方

producer:資料的傳送方

consumer:資料的接收方

connection: 就是乙個tcp的連線。producer和consumer都是通過tcp連線到rabbitmq server的。以後我們可以看到,程式的起始處就是建立這個tcp連線。

channels: 虛擬連線。它建立在上述的tcp連線中。資料流動都是在channel中進行的。也就是說,一般情況是程式起始建立tcp連線,第二步就是建立這個channel。

那麼,為什麼使用channel,而不是直接使用tcp連線?

對於os來說,建立和關閉tcp連線是有代價的,頻繁的建立關閉tcp連線對於系統的效能有很大的影響,而且tcp的連線數也有限制,這也限制了系統處理高併發的能力。但是,在tcp連線中建立channel是沒有上述代價的。對於producer或者consumer來說,可以併發的使用多個channel進行publish或者receive。

1. 資訊生產者將訊息(message)傳送到exchange

2. exchange接受訊息之後,負責將其路由到具體的佇列中

3. bindings負責連線exchange和佇列(queue)

4. 訊息到達佇列(queue),然後等待被訊息接收端處理

5. 訊息接收端處理訊息

exchanges有三種型別:direct, fanout,topic。 每個實現了不同的路由演算法(routing algorithm)。

direct exchange: 如果 routing key 匹配, 那麼message就會被傳遞到相應的queue中。其實在queue建立時,它會自動的以queue的名字作為routing key來繫結那個exchange。

fanout exchange: 會向響應的queue廣播。

topic exchange: 對key進行模式匹配,比如ab*可以傳遞到所有ab*的queue。

consumer和procuder都可以通過 queue.declare 建立queue。如果queue已經存在,也不會報錯。如果沒有,要麼傳送不了訊息,要麼取不到訊息,所以還是都建立吧。

bindings就是將通過exchange將queue和routing keys繫結。

RabbitMQ基本概念

總結一下傳送接收訊息的過程 www.wuxidoudizhu.com 通過上面例子對rabbitmq有乙個感性認識後,現在來介紹rabbitmq中的基本概念。broker 訊息佇列伺服器實體 訊息 每個訊息都有乙個路由鍵 routing key 的屬性。就是乙個簡單的字串。connection 應用...

RabbitMq 基本概念

rabbitmq是乙個基於amqp的訊息佇列,訊息佇列的主要目的實現訊息的生產者和消費者之間的解耦,支援多應用之間的非同步協調工作。開發語言 erlang 面向併發的程式語言。首先來一張訊息佇列的經典圖,可以劃分為三個角色 producer,queue,consumer 看到這個模型,如果對jdk的...

RabbitMQ 基本概念

amqp 核心概念 exchange 作用 是 amqp 和 rabbitmq 的核心元件 根據繫結關係和路由鍵為訊息提供路由,將訊息 至相應的佇列 有四種型別 direct topic fanout headers 使用較少 direct exchange 當 routing key 和 bind...