以前,筆者寫過《 CentOS 7.2 安裝 RabbitMQ》 這篇文章,今天整理一下 RabbitMQ 相關的筆記便於之後複習。spa
在 RabbitMQ 官網上提供了 6 中工做模式:簡單模式、工做隊列模式、發佈/訂閱模式、路由模式、主題模式 和 RPC 模式。對象
本篇只對前 5 種工做方式進行介紹。blog
之因此將這兩種模式合併在一塊兒介紹,是由於它們工做原理很是簡單,由 3 個對象組成:生產者、隊列、消費者。rabbitmq
生產者負責生產消息,將消息發送到隊列中,消費者監聽隊列,隊列有消息就進行消費。隊列
當有多個消費者時,消費者平均消費隊列中的消息。路由
這 3 種模式都使用到交換機。get
生產者不直接與隊列交互,而是將消息發送到交換機中,再由交換機將消息放入到已綁定該交換機的隊列中給消費者消費。it
經常使用的交換機類型有 3 種:fanout、direct、topic。原理
工做原理圖以下:im
fanout:不處理路由鍵。只須要簡單的將隊列綁定到交換機上。一個發送到交換機的消息都會被轉發到與該交換機綁定的全部隊列上。很像子網廣播,每臺子網內的主機都得到了一份複製的消息。fanout 類型交換機轉發消息是最快的。
其中,發佈/訂閱模式使用的是 fanout 類型的交換機。
direct:處理路由鍵。須要將一個隊列綁定到交換機上,要求該消息與一個特定的路由鍵徹底匹配。若是一個隊列綁定到該交換機上要求路由鍵 「dog」,則只有被標記爲 「dog」 的消息才被轉發,不會轉發 dog.puppy,也不會轉發 dog.guard,只會轉發dog。
其中,路由模式使用的是 direct 類型的交換機。
topic:將路由鍵和某模式進行匹配。此時隊列須要綁定要一個模式上。符號 「#」 匹配一個或多個詞,符號「」匹配很少很多一個詞。所以「audit.#」 可以匹配到「audit.irs.corporate」,可是「audit.」 只會匹配到 「audit.irs」。
其中,主題模式使用的是 topic 類型的交換機。